计算字符串中的字符数

问题描述:

我想从使用Len()函数的变量中获取字符数,但vba说它不能识别它。所以我想知道我的错误是什么,我该如何解决?计算字符串中的字符数

Dim y As Long 
Dim counthidden As Byte 
Dim nbcharac As Long 
Dim espace As Long 

'boucle sur toutes les diapos à partir de la 2e 
For y = 3 To ActivePresentation.Slides.Count 
Set Diapo = ActivePresentation.Slides(y) 

If Diapo.SlideShowTransition.Hidden = msoTrue Then 
counthidden = counthidden + 1 
End If 
'si la diapo a un titre 
If Diapo.Shapes.HasTitle And Diapo.SlideShowTransition.Hidden = msoFalse Then 
Set titre = Diapo.Shapes.Title 
nbcharac = Len(titre) 
espace = 90 - nbcharac 
texte_ajout = texte_ajout & titre.TextFrame. _ 
TextRange.Text & space(espace) & Format(y - counthidden, "0") & vbCrLf 
End If 

Next y 

预先感谢您的帮助 (也是,如果你知道一种可以放入一个PowerPoint页面的字符数,但我可以测试为)

+2

'Chr(espace)'你应该得到什么? 。我想你想要做'space(空格)' – milevyo

+0

@milevyo我想写在幻灯片的右侧幻灯片页面的数量(如目录)。我尝试了vbTab,但我没有得到数字对齐。 chr(espace)应该在标题和页码之间加上空格(或者我认为)。 错误发生在那个chr()/ space()混淆之前,所以它没有读到那么远。 (这个版本是对之前有效的东西的修改,页码在标题之前) –

+0

我很惊讶这个编译/运行。 'titre'应该是一个字符串,这意味着'set'应该会引发错误。我认为你想要:'titre = Diapo.Shapes.Title' *没有'set' – Hambone

由于tietreShape对象,而不是一个字符串,Len将无法​​正常工作。你需要从得到的形状文本来计算长度,是这样的:

Set titre = Diapo.Shapes.Title 
nbcharac = Len(titre.TextFrame.TextRange.Text) 

可以通过在你的模块的顶部使用Option Explicit防止许多这样的问题,这将迫使你明确地声明所有变量,例如tietreDiapo(一个Slide对象),并在编译时显示许多问题,而不是在运行时显示。

+0

我可以做类似的事情吗?但是不能获得长度,我可以得到字符串的大小(以px或mm为单位)? –

+0

你是指字体大小?或者文本框的大小? –

+0

我的意思是文本框内的字符串的宽度。我知道“a”的宽度与“l”不一样。所以“azerty”和“wwpmmm”的宽度不一样,尽管它们都有6个字符。在我的演示文稿中,文本框的大小设置为幻灯片的宽度。我不知道我是否以正确的方式解释它,所以,对此抱歉。 –