循环通过单词VBA powerpoint

时间:2014-07-04 20:12:03

标签: vba loops powerpoint words

我是powerpoint对象模型的新手,想知道为什么下面的代码片段不起作用。代码的目的是通过一个textframe并用它们的小写等价物替换某些单词。我不确定我是否要正确地替换这个词......但我很担心为什么该计划不会进入"进入" if语句......即使它找到""他们都是弦乐!

任何帮助表示赞赏! :)

Sub findConjectures()

  Dim theWord As TextRange

  With ActiveWindow.Selection.ShapeRange(1).TextFrame

   For Each theWord In .TextRange.Words

     MsgBox CStr(theWord) 'just used this as a test

     If CStr(LCase(theWord)) = "of" Then ' this is the part that confuses me!
         theWord.Text = LCase(theWord) 'not sure if this is used correctly
     End If

   Next

  End With

End Sub

2 个答案:

答案 0 :(得分:1)

尝试使用strcomp函数,比如。

Dim str1 as String = "of"
strcomp(CStr(LCase(theWord)), str1)

http://msdn.microsoft.com/en-us/library/9s233cfc(v=vs.90).aspx

答案 1 :(得分:0)

  

为什么下面的代码片段不起作用。

代码片段正在工作,它只是没有按照您的期望行事:)

...因为每个theWord可能包含尾随空格:"of "<> "of"

要处理这种潜力,还要处理Trim函数(你可以省略Cstr,因为这里没有任何影响):

 If LCase(Trim(theWord)) = "of" Then 
     theWord.Text = LCase(theWord) 
 End If

因此,我们比较 trimmed 字符串,然后我们替换整个字符串,这会保留尾随空格。

您可能也对TextRange.Replace方法感兴趣,正如Steve Rindsberg在评论中提到的那样。