Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> 4. September: Office-Treffen Rhein-Ruhr <-
Commandbutton zur Laufzeit erstellen
zurück: Mit Excel unbekannte Anzahl Zeilen auslesen und in Word expo weiter: Problem mit Variable Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Gast



Verfasst am:
12. Feb 2008, 20:55
Rufname:

Commandbutton zur Laufzeit erstellen - Commandbutton zur Laufzeit erstellen

Nach oben
       Version: Office 2003

Hallo Forum!

Meine VBA-Kenntnisse wachsen und wachsen, aber manchmal komme ich einfach nicht weiter. So auch diesmal...

Ich erstelle in einem Tabellenblatt Commandbuttons zur Laufzeit:

Code:

Sub CB_Create()
    With Tabelle1.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
                          Left:=Tabelle1.Cells(1, 1).Left + 6, _
                          Top:=Tabelle1.Cells(1, 1).Top + 2, _
                          Width:=30.75, _
                          Height:=18)
      .Name = "Button_CB1"
      .Object.Caption = "Test"
    End With
End Sub


Da dieser Code aufgerufen wird, wenn das Tabellenblatt aktiviert wird, also dieser Code:

Code:

Private Sub Worksheet_Activate()
Dim obj As Object, i As Boolean
    For Each obj In Tabelle1.OLEObjects
        If obj.Name <> "Button_CB1" Then
            i = False
        Else
            i = True
            Exit For
        End If
    Next
    If i = False Then CB_Create
    Buttons_Aktivieren
End Sub


Damit der Button etwas macht, habe ich ein Klassenmodul mit dem Namen "clsKontakt" definiert:

Code:

Option Explicit

Public WithEvents myKontakt As MSForms.CommandButton

Private Sub myKontakt_Click()
    msgbox "Mach was!"
End Sub


Natürlich muss noch definiert werden, wann das Klassenmodul angesprochen wird:

Code:

Option Explicit

Dim CollKont As Collection, i%

Sub Buttons_Aktivieren()
    Dim Kontakte As clsKontakt
   
    Set CollKont = New Collection
 
    For i = 1 To Tabelle1.OLEObjects.Count
        If Tabelle1.OLEObjects(i).Name = "Button_CB1" Then
            Set Kontakte = New clsKontakt
            Set Kontakte.myKontakt = Tabelle1.OLEObjects(i).Object
            CollKont.Add Kontakte
        End If
    Next
End Sub


Jetzt kommt das Kuriose:

Der Button wird beim ersten Durchlauf, also wenn das Tabellenblatt das erste Mal aktiviert wird, noch nicht über das Klassenmodul angesprochen. Man kann also auf den Button klicken, aber die Messagebox erscheint nicht.

Erst wenn man die Buttons_Aktivieren-Prozedur erneut aufruft, bekommt der Button das richtige Klick-Ereignis und die Messagebox poppt auf.

Hat jemand eine Erklärung, oder besser noch, eine Lösung dafür?

Vielen Dank, Spampunk
Bamberg
Excel/Access mit VBA


Verfasst am:
12. Feb 2008, 22:14
Rufname: Gerd

AW: Commandbutton zur Laufzeit erstellen - AW: Commandbutton zur Laufzeit erstellen

Nach oben
       Version: Office 2003

Hallo Spampunk,

manchmal ist Excel einfach schneller als man glaubt ... Razz

Das ActiveX-Steuerelement ist noch nicht fertig, wenn du versuchst es einer Klasse zuzuweisen. Mit einem kleinen Trick über die OnTime-Methode könnten wir Excel die nötige Zeit geben, das Element zu laden.

Private Sub Worksheet_Activate()
Dim obj As Object, i As Boolean
    For Each obj In Tabelle1.OLEObjects
        If obj.Name <> "Button_CB1" Then
            i = False
        Else
            i = True
            Exit For
        End If
    Next
    If i = False Then
        CB_Create
    Else
        Buttons_Aktivieren
    End If
End Sub


Sub CB_Create()
    With Tabelle1.OLEObjects.Add(ClassType:="Forms.CommandButton.1", _
                          Left:=Tabelle1.Cells(1, 1).Left + 6, _
                          Top:=Tabelle1.Cells(1, 1).Top + 2, _
                          Width:=30.75, _
                          Height:=18)
      .Name = "Button_CB1"
      .Object.Caption = "Test"
    End With
Application.OnTime Now + TimeValue("00:00:01"), "Buttons_Aktivieren"
End Sub
Konnte ich dir damit helfen ?

LG Gerd

_________________
NIPSILD = Nicht In Problemen, Sondern In Lösungen Denken
Spampunk
Excel mit VBA Advanced


Verfasst am:
13. Feb 2008, 23:35
Rufname:


AW: Commandbutton zur Laufzeit erstellen - AW: Commandbutton zur Laufzeit erstellen

Nach oben
       Version: Office 2003

Hallo Gerd,

vielen Dank für Deine Hilfe, genau das habe ich gesucht.

Funktioniert wunderbar!

Darüber hinaus war ich wohl nicht eingeloggt, sorry. Embarassed

LG, Timo

_________________
Ob Du nun sagst, Du schaffst es, oder ob Du nun sagst, Du schaffst es nicht - in beiden Fällen behältst Du Recht.

Henry Ford
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Hilfe: XML aus XLS erstellen und für InDesign Serienbrief verwenden 1 elchupacabre 133 30. Aug 2010, 20:19
Susi67 XML aus XLS erstellen und für InDesign Serienbrief verwenden
Keine neuen Beiträge Excel VBA (Makros): Commandbutton dynamisch Bild zuweisen 3 Thomas_D2407 531 30. Jan 2010, 14:34
Thomas_D2407 Commandbutton dynamisch Bild zuweisen
Keine neuen Beiträge Excel Hilfe: Kassenbuch mit Excel erstellen 5 Dan598 1057 04. Jan 2010, 18:23
Dan598 Kassenbuch mit Excel erstellen
Keine neuen Beiträge Excel Formeln: Angebot mit variablen Nummern in Excel erstellen??? Formel? 4 Bennla 105 30. Okt 2009, 11:58
Bennla Angebot mit variablen Nummern in Excel erstellen??? Formel?
Keine neuen Beiträge Excel Formeln: Dateipfad erstellen aus Zellen 7 kai.brandau 410 26. Okt 2009, 17:07
neopa Dateipfad erstellen aus Zellen
Keine neuen Beiträge Excel VBA (Makros): Excel Tool zum erstellen einer Top 100 Liste Produkten 2 Schweini31 512 31. Jul 2009, 19:11
Gast Excel Tool zum erstellen einer Top 100 Liste Produkten
Keine neuen Beiträge Excel VBA (Makros): Makro erstellen für zu viele Wenn Funktion 4 Gast12345 111 14. Jul 2009, 15:56
Gast Makro erstellen für zu viele Wenn Funktion
Keine neuen Beiträge Excel VBA (Makros): Excel 2007 - Programm erstellen, das automatisch eine E-Mail 4 Gast 421 24. Mai 2009, 16:01
Klaus aus M Excel 2007 - Programm erstellen, das automatisch eine E-Mail
Keine neuen Beiträge Excel Auswertungen: Diagramm auf extra Tabellenseite erstellen 3 Stefanger 322 20. März 2009, 23:21
Timmee Diagramm auf extra Tabellenseite erstellen
Keine neuen Beiträge Excel VBA (Makros): Einzelne Textdateien mit Excel erstellen 1 razzefazze 1131 22. Aug 2008, 13:06
ransi Einzelne Textdateien mit Excel erstellen
Keine neuen Beiträge Excel VBA (Makros): wieder mal: pdf erstellen..... 14 Luja 2877 16. Jul 2008, 13:05
Luja wieder mal: pdf erstellen.....
Keine neuen Beiträge Excel Hilfe: Menükarte mit Exel erstellen 6 Elb 2542 02. März 2008, 17:56
Robbi Dick Menükarte mit Exel erstellen
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Excel Diagramme