0

将 Powerpoint 2010 和 MS Visual Basic 用于应用程序:

我正在尝试将特定形状作为参数传递...尝试了不同的语法或方法,但没有运气,它似乎阻止了在函数之间使用 oShape 变量。

函数 ClickBtn1() 将 oShape 变量设置为要修改的形状的名称,并调用修改函数 Incre()。

Incre() 将数值设置为 12,将文本范围从形状更新为它,然后将前景色更改为 10、10、10,然后重绘幻灯片...

我所拥有的是这样的:

Dim oShape As Shape
Dim x As Long

Sub ClickBtn1()
MsgBox "Inside ClickBtn1"
oShape = ActivePresentation.Slides(7).Shapes("ParaIcon")
Incre
End Sub

Sub Incre()
MsgBox "inside Incre"
x = 12
oShape.TextFrame.TextRange.Text = x
oShape.Fill.ForeColor.RGB = RGB(10, 10, 10)
SlideShowWindows(7).View.GotoSlide (SlideShowWindows(7).View.Slide.SlideIndex)
End Sub

我有一个箭头形状,其动作设置为“运行宏 ClickButton1”,在 Powerpoint 文档的幻灯片 7 上有一个名为“ParaIcon”的矩形...

有什么建议么?

谢谢!

4

1 回答 1

2

我会这样做;避免使用全局变量并使用 SET 将对象引用分配给变量。

Sub ClickBtn1()
    Dim oShape as Shape
    MsgBox "Inside ClickBtn1"
    SET oShape = ActivePresentation.Slides(7).Shapes("ParaIcon")
    Incre oShape    
End Sub

Sub Incre(oShape as Shape)
    Dim x as Long
    MsgBox "inside Incre"
    x = 12

    ' Convert numbers to string before assigning text
    oShape.TextFrame.TextRange.Text = Cstr(x)

    oShape.Fill.ForeColor.RGB = RGB(10, 10, 10)
    SlideShowWindows(7).View.GotoSlide (SlideShowWindows(7).View.Slide.SlideIndex)    
End Sub
于 2012-08-24T02:06:21.437 回答