2016-07-25 1 views
-1

J'essaye de mettre une macro à une forme de vba mais j'ai reçu cette erreur "l'utilisation invalide de la propriété", pourquoi?
Classe Code CContainer:Erreur d'utilisation de propriété invalide sur Shape.OnAction

Option Explicit 
Sub CreateContainer() 
Dim s As Shape ' shape container 
Dim t As Shape 'text container 
Dim sr As Variant 'container for grouping 
Dim w As Worksheet 
Set w = ActiveWorkbook.Worksheets(1) 
Set s = w.Shapes.AddShape(msoShapeRectangle, 10, 10, 100, 100) 
With s 
s.Fill.ForeColor.RGB = RGB(255, 255, 255) 
s.Line.ForeColor.RGB = RGB(100, 100, 100) 
s.Line.DashStyle = msoLineDash 
s.Line.Style = msoLineSingle 
s.Line.Weight = 0.5 
s.Name = "ShapeExample" 
End With 
Set t = w.Shapes.AddTextbox(msoTextOrientationHorizontal, s.Left + 10, s.Top + 10, s.Width - 20, 20) 
With t 
t.Line.ForeColor.RGB = RGB(100, 100, 100) 
t.Line.DashStyle = msoLineDash 
t.TextFrame.Characters.Text = "Connector" 
t.TextFrame.Characters.Font.Size = 10 
t.TextFrame.HorizontalAlignment = xlHAlignCenter 
t.Name = "TextShapeExample" 
End With 
Set sr = w.Shapes.Range(Array("ShapeExample", "TextShapeExample")).Group 
sr.Name = "ContainerExample" 

t.OnAction "MsgCall" '<-- here the error occurs 
End Sub 

Sub MsgCall() 
MsgBox "Hello There" 
End Sub 

et voici le module d'où je veux l'appeler:

Option Explicit 

Sub example() 
Dim connector As CContainer 
Set connector = New CContainer 
connector.CreateContainer 

End Sub 
+0

Vous manquez un signe égal? t.OnAction = "MsgCall" –

+0

non, ce qui provoquerait une 'application définie/erreur d'objet', mais merci @CodyG. – Jey

+0

Application définie/erreur d'objet de Set sr = w.Shapes.Range (Array ("ShapeExample", "TextShapeExample")). Ligne de groupe. –

Répondre

0

j'ai changé votre code un peu à ceci:

With Worksheets(1).Shapes(1) 

.OnAction "MsgCall" '<-- no more error here 

End With 

Maintenant, je reçois une erreur différente: Grouping is disabled for selected shapes pour ce code:

Set sr = w.Shapes.Range(Array("ShapeExample", "TextShapeExample")).Group 
+0

Je reçois toujours la même erreur même en changeant mon code pour ce que vous m'avez proposé, 'utilisation invalide de la propriété' – Jey

+1

J'ai trouvé la réponse, mais n'est pas ce que je voulais, le problème est qu'une procédure ne peut pas être appelée (du moins dans mon exemple) du même module de classe, j'ai déplacé le sous-programme 'MsgCall' dans un nouveau module std puis j'ai modifié mon code dans la ligne-erreur en le changeant pour ce 'OnAction =" MsgCall "' et puis cela fonctionne, merci pour votre aide de toute façon, car il me guide pour trouver la réponse – Jey