You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何用PowerPoint VBA检查随机幻灯片中指定文本框内容是否一致?

解决ActiveX文本框与普通文本框文本对比的问题

嘿,我注意到你在写VBA代码对比演示文稿里的两个文本框内容,这里有个关键问题得修正——ActiveX控件的文本获取逻辑和普通Shape文本框完全不一样,原代码直接用Shapes("TextBox2").TextFrame.TextRange会报错的,因为TextBox2是ActiveX控件,属于OLE对象,得换个方式获取它的文本。

给你调整好的完整代码,加了注释方便理解:

Sub CompareTextBoxes()
    Dim osld As Slide
    Dim activeXTextBox As OLEObject
    Dim regularTextBoxText As String
    Dim activeXTextBoxText As String
    Dim vragen As Byte
    Dim juist As Byte
    Dim fout As Byte
    
    ' 获取当前放映窗口显示的幻灯片
    Set osld = ActivePresentation.SlideShowWindow.View.Slide
    
    ' 提取普通文本框"naam"的内容
    regularTextBoxText = osld.Shapes("naam").TextFrame.TextRange.Text
    
    ' 提取ActiveX文本框"TextBox2"的内容
    ' 先定位到这个OLE对象,再访问它的Text属性
    Set activeXTextBox = osld.OLEObjects("TextBox2")
    activeXTextBoxText = activeXTextBox.Object.Text
    
    ' 对比两个文本内容
    If activeXTextBoxText = regularTextBoxText Then
        ' 文本一致时的操作,比如正确计数加1
        juist = juist + 1
    Else
        ' 文本不一致时的操作,比如错误计数加1
        fout = fout + 1
    End If
    
    ' 可选:弹出提示显示统计结果
    MsgBox "匹配成功:" & juist & "次" & vbCrLf & "匹配失败:" & fout & "次"
End Sub

几个重要的点要注意:

  • ActiveX文本框属于OLEObject集合,所以要用osld.OLEObjects("TextBox2")来获取,再通过.Object.Text拿到它的输入文本
  • 把文本内容存到变量里不仅让代码更易读,也方便你在调试时查看具体值
  • 如果你的vragen变量是用来统计总次数的,记得在合适的地方给它赋值哦

内容的提问来源于stack exchange,提问作者JeroenW

火山引擎 最新活动