Adicione um UserForm ao arquivo Power Point.
Coloque um CommandButton e um ListBox nesse UserForm .
Coloque os seguintes códigos no UserForm .
Public Sub UserForm_Initialize() UserForm1.ListBox1.AddItem "msoShapePentagon" UserForm1.ListBox1.AddItem "msoShapeRectangle" UserForm1.ListBox1.AddItem "msoShapeSmileyFace" End Sub
'''''''''''''''''''''''''''''''
Public Sub CommandButton1_Click() MsgBox UserForm1.ListBox1.Value UserForm1.Hide Call Macro2 End Sub
Coloque os seguintes códigos no Módulo1 do arquivo Power Point.
Public Sub Macro1() UserForm1.Show End Sub
'''''''''''''''''''''''''''''''
Public Sub Macro2() ActivePresentation.Slides.Add 1, ppLayoutBlank Dim myVariant As Variant myVariant = UserForm1.ListBox1.Value MsgBox myVariant 'This line is okey 'ActivePresentation.Slides(1).Shapes.AddShape Type:=msoShapeRectangle, Left:=0, Top:=0, Width:=480, Height:=100 'This line gives an error ActivePresentation.Slides(1).Shapes.AddShape Type:=myVariant, Left:=0, Top:=0, Width:=480, Height:=100 End Sub
Execute Macro1 e selecione msoShapeRectangle em ListBox que faz parte do UserForm e pressione CommandButton .
Esta é a mensagem de erro.
Run-time error 13: Type mismatch
Esta é a linha de erro
ActivePresentation.Slides(1).Shapes.AddShape Type:=myVariant, Left:=0, Top:=0, Width:=480, Height:=100
Então, como posso resolver esse erro?
"msoShapePentagon"
, aString
, não é o mesmo quemsoShapePentagon
, um membro de um enum com um valor correspondente de 51.Uma opção é uma função para converter a
String
representação no equivalente do enum:Observe que você precisa passar esta função a
String
, não aVariant
.