Vba 图像按钮图片更改
如果用户激活一个图像按钮,按钮的图片应该改变。我使用这个代码Vba 图像按钮图片更改,vba,powerpoint,imagebutton,Vba,Powerpoint,Imagebutton,如果用户激活一个图像按钮,按钮的图片应该改变。我使用这个代码 Dim mainslide As Object Set mainslide = ActivePresentation.Slides(2) If mainslide.Shapes(11).Name = "green" Then mainslide.Shapes(11).Picture = LoadPicture("pathname") fődia.Shapes(11).Name = "red" Else mai
Dim mainslide As Object
Set mainslide = ActivePresentation.Slides(2)
If mainslide.Shapes(11).Name = "green" Then
mainslide.Shapes(11).Picture = LoadPicture("pathname")
fődia.Shapes(11).Name = "red"
Else
mainslide.Shapes(11).Picture = LoadPicture("pathname2")
fődia.Shapes(11).Name = "green"
End If
我得到运行时错误438,但在Excel中此方法有效。您的示例中没有定义fodia,因此很难猜测它应该是什么。但我不认为这是问题的根源。这是另一种有效的方法。需要注意的几点: PPT对ActiveX对象的处理很奇怪。要获取用于控制对象的属性,必须使用Shape.OLEFormat.Object.property\u name 至少在某些版本中,ActiveX形状不会以正常的形状顺序出现;您可以在幻灯片上的形状之间进行制表,依次选择每个形状,但ActiveX形状永远不会被选中。命名形状是一种解决方法(并且在形状重新排序时不会改变,因此更加可靠)
fodia是主幻灯片,我忘记翻译了(谢谢你的回答
Sub RedOrGreen()
Dim mainslide As Slide
Dim oSh As Shape
Set mainslide = ActivePresentation.Slides(1)
Set oSh = FindShapeNamed("green", mainslide)
If Not oSh Is Nothing Then
oSh.OLEFormat.Object.Picture = LoadPicture("c:\temp\red.jpg")
oSh.Name = "red"
Exit Sub
End If
Set oSh = FindShapeNamed("red", mainslide)
If Not oSh Is Nothing Then
oSh.OLEFormat.Object.Picture = LoadPicture("c:\temp\green.jpg")
oSh.Name = "green"
Exit Sub
End If
End Sub
Function FindShapeNamed(sName As String, oSl As Slide) As Shape
Dim oSh As Shape
For Each oSh In oSl.Shapes
If oSh.Name = sName Then
Set FindShapeNamed = oSh
Exit Function
End If
Next
End Function