2016-07-25 21 views
-1

Ich versuche, ein Makro zu einer Form aus VBA, aber ich habe diesen Fehler "Ungültige Verwendung der Eigenschaft", warum?
Klasse CContainer Code:Ungültige Verwendung von Eigenschaft Fehler auf 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 

und hier ist das Modul aus, wo ich es nennen wollen:

Option Explicit 

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

End Sub 
+0

Vermissen Sie ein Gleichheitszeichen? t.OnAction = "MsgCall" –

+0

nein, das würde einen 'application defined/object error' verursachen, aber danke @CodyG. – Jey

+0

Anwendungsdefinierter/Objektfehler aus dem Set sr = w.Shapes.Range (Array ("ShapeExample", "TextShapeExample")). Gruppenzeile. –

Antwort

0

ich Ihren Code ein wenig zu sich dies geändert:

With Worksheets(1).Shapes(1) 

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

End With 

Jetzt bekomme ich einen anderen Fehler: Grouping is disabled for selected shapes für diesen Code:

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

Ich erhalte immer noch den gleichen Fehler, auch wenn ich meinen Code für das ändere, was Sie mir vorgeschlagen haben' ungültige Verwendung der Eigenschaft ' – Jey

+1

Ich habe gefunden die Antwort, aber ist nicht das, was ich wollte, das Problem ist, dass eine Prozedur (zumindest in meinem Beispiel) nicht vom selben Klassenmodul aufgerufen werden kann, ich habe das Unterprogramm 'MsgCall' in ein neues Std-Modul verschoben und dann meinen Code geändert im Zeilenfehler ändere ich dafür 'OnAction = "MsgCall" 'und dann klappt es, Danke für deine Hilfe trotzdem, weil es mich anleitet die Antwort zu finden – Jey