oleobject mit VBA bestücken: So funktioniert's
Schritt-für-Schritt-Anleitung
-
Neues Arbeitsblatt hinzufügen:
Application.Worksheets.Add
-
OLEObject hinzufügen:
ActiveSheet.OLEObjects.Add ClassType:="Forms.CommandButton.1"
-
Name und Caption des OLEObjects festlegen:
ActiveSheet.OLEObjects(ActiveSheet.OLEObjects.Count).Name = "cb_Loeschen"
ActiveSheet.OLEObjects("cb_Loeschen").Object.Caption = "löschen"
-
Code für das OLEObject hinzufügen:
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.InsertLines .CountOfLines + 1, "Private Sub cb_Loeschen_Click()"
.InsertLines .CountOfLines + 2, "ActiveSheet.Delete"
.InsertLines .CountOfLines + 3, "End Sub"
.InsertLines .CountOfLines + 4, ""
End With
-
Makro ausführen:
Starte das Makro, um das OLEObject zu erstellen und den Code hinzuzufügen.
Häufige Fehler und Lösungen
Alternative Methoden
Eine alternative Methode zur Erstellung eines OLEObjects ist die Verwendung einer Variablen für das OLEObject:
Dim myCB As OLEObject
Set myCB = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1")
myCB.Name = "cb_Loeschen"
myCB.Object.Caption = "löschen"
Du kannst den Code für das Click-Ereignis auch als String speichern und dann in das Modul einfügen:
Dim sCode As String
sCode = "Private Sub cb_Loeschen_Click()" & vbLf & "ActiveSheet.Delete" & vbLf & "End Sub"
With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
.AddFromString sCode
End With
Praktische Beispiele
Hier ist ein komplettes Beispiel, das die oben genannten Schritte zusammenfasst:
Sub Makro1()
Application.Worksheets.Add
With ActiveSheet
Dim myCB As OLEObject
Set myCB = .OLEObjects.Add(ClassType:="Forms.CommandButton.1")
myCB.Name = "cb_Loeschen"
myCB.Object.Caption = "löschen"
Dim sCode As String
sCode = "Private Sub cb_Loeschen_Click()" & vbLf & "ActiveSheet.Delete" & vbLf & "End Sub"
With ThisWorkbook.VBProject.VBComponents(.CodeName).CodeModule
.AddFromString sCode
End With
End With
End Sub
Tipps für Profis
- Verwende
With
-Anweisungen, um den Code leserlicher und effizienter zu gestalten.
- Achte darauf, dass der Zugriff auf das VBA-Projekt immer erlaubt ist, insbesondere wenn du mit
oleobjects.add
arbeitest.
- Teste deinen Code regelmäßig, um sicherzustellen, dass alles wie gewünscht funktioniert.
FAQ: Häufige Fragen
1. Wie kann ich ein OLEObject in ein bestehendes Arbeitsblatt einfügen?
Du kannst den gleichen Code verwenden, aber anstelle von Application.Worksheets.Add
wählst du dein bestehendes Arbeitsblatt aus.
2. Warum funktioniert der Code für das Click-Ereignis nicht?
Stelle sicher, dass du dem VBA-Projekt vertraust. Ohne diese Einstellung kann der Code nicht ausgeführt werden.
3. Was ist der Unterschied zwischen OLEObject und ActiveX-Steuerelement?
OLEObjects sind ein breiterer Typ von Objekten, während ActiveX-Steuerelemente spezifische Steuerelemente sind, die in Formularen verwendet werden können.