Ich versuche, eine Schaltfläche zu erhalten, die ich dynamisch in einem Excel-Benutzerformular erstellt habe, um ein Makro namens transfer
auszuführen, das ich in Module 1
des Abschnitts "Module" meines Projekts geschrieben habe .Code einer dynamisch erstellten Schaltfläche zuweisen
Im Folgenden werde ich den Code eingefügt habe ich bisher in der Userform geschrieben haben, die es tatsächlich schafft, die Transfer to Sheet
Schaltfläche in dem Rahmen zu schaffen (die ich auch dynamisch erstellt haben), aber aus irgendeinem Grund, wenn ich laufe VBA Ich bekomme eine 438 error
Nachricht, die besagt, dass Object doesn't support this property or method
.
Kann mir jemand sagen, wie ich das lösen kann?
Hier ist der Code:
Dim framecontrol1 As Control
Set workitemframe = Controls.Add("Forms.Frame.1")
With workitemframe
.Width = 400
.Height = 400
.Top = 160
.Left = 2
.ZOrder (1)
.Visible = True
End With
workitemframe.Caption = "Test"
Set framecontrol1 = workitemframe.Controls.Add("Forms.commandbutton.1")
With framecontrol1
.Width = 100
.Top = 70
.Left = 10
.ZOrder (1)
.Visible = True
.Caption = "Transfer to Sheet"
End With
framecontrol1.OnAction = "transfer"
+1 Ich bin nicht ganz sicher, dass die Schaltfläche gemeint war (mein Code) bleiben oder (dieser Code) am Ende verschwinden. Das Klassenmodul ist ein cleverer Workaround, um Code für die neue Schaltfläche bereitzustellen. – brettdj
Hallo Siddharth, dein Beispiel hat wirklich gut funktioniert und die Art, wie du es erklärt hast, war großartig, besonders für einen VBA-Anfänger wie mich! Ich kann dich nicht gehen lassen, ohne dich zu erklären, was der cmdArray (i) ist. Teil tut in ReDim Preserve cmdArray (1 bis ich) Set cmdArray (i) .CmdEvents = ctl_Command –
(Hoppla ... gedrückt, bevor ich fertig mit dem Schreiben meiner Nachricht!) Wie ich sagte, wäre es gut zu verstehen, was cmdArray (i) wird benötigt, damit jede Erklärung, die Sie zur Verfügung stellen können, großartig wäre. Nochmals vielen Dank für Ihre Hilfe Siddharth! –