计算字符串中的字符数
我想从使用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页面的字符数,但我可以测试为)
由于tietre
是Shape
对象,而不是一个字符串,Len
将无法正常工作。你需要从得到的形状文本来计算长度,是这样的:
Set titre = Diapo.Shapes.Title
nbcharac = Len(titre.TextFrame.TextRange.Text)
可以通过在你的模块的顶部使用Option Explicit
防止许多这样的问题,这将迫使你明确地声明所有变量,例如tietre
和Diapo
(一个Slide
对象),并在编译时显示许多问题,而不是在运行时显示。
我可以做类似的事情吗?但是不能获得长度,我可以得到字符串的大小(以px或mm为单位)? –
你是指字体大小?或者文本框的大小? –
我的意思是文本框内的字符串的宽度。我知道“a”的宽度与“l”不一样。所以“azerty”和“wwpmmm”的宽度不一样,尽管它们都有6个字符。在我的演示文稿中,文本框的大小设置为幻灯片的宽度。我不知道我是否以正确的方式解释它,所以,对此抱歉。 –
'Chr(espace)'你应该得到什么? 。我想你想要做'space(空格)' – milevyo
@milevyo我想写在幻灯片的右侧幻灯片页面的数量(如目录)。我尝试了vbTab,但我没有得到数字对齐。 chr(espace)应该在标题和页码之间加上空格(或者我认为)。 错误发生在那个chr()/ space()混淆之前,所以它没有读到那么远。 (这个版本是对之前有效的东西的修改,页码在标题之前) –
我很惊讶这个编译/运行。 'titre'应该是一个字符串,这意味着'set'应该会引发错误。我认为你想要:'titre = Diapo.Shapes.Title' *没有'set' – Hambone