Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: ---> Neu: Office 2010 Forum <-
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, 19: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, 21: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, 22: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 VBA (Makros): beim Erstellen neuer Datei den Code löschen 7 Martin12345 102 19. Jun 2009, 17:06
Martin12345 beim Erstellen neuer Datei den Code löschen
Keine neuen Beiträge Excel Formate: Excel 2003 Dropdown Auswahlliste erstellen 6 Cribbster 9418 22. Apr 2009, 15:54
Gast Excel 2003 Dropdown Auswahlliste erstellen
Keine neuen Beiträge Excel Hilfe: Verkaufsübersicht erstellen brauche eure Hilfe 2 Luna123 101 07. Feb 2009, 08:36
ae Verkaufsübersicht erstellen brauche eure Hilfe
Keine neuen Beiträge Excel Auswertungen: Aus Auto Filter Stastik erstellen 2 t Bone 302 25. Jan 2009, 03:00
t Bone Aus Auto Filter Stastik erstellen
Keine neuen Beiträge Excel VBA (Makros): MsgBox erstellen 1 torsten118 1415 03. Jan 2009, 17:20
Zwickel MsgBox erstellen
Keine neuen Beiträge Excel VBA (Makros): .txt Datei als Protokoll erstellen wenn ein Makrobutton..... 2 freddy-krueger 707 28. Dez 2008, 01:05
Gast .txt Datei als Protokoll erstellen wenn ein Makrobutton.....
Keine neuen Beiträge Excel VBA (Makros): Hyperlinks automatisch erstellen 8 Céline21 200 24. Nov 2008, 07:06
Céline21 Hyperlinks automatisch erstellen
Keine neuen Beiträge Excel VBA (Makros): Neue Position in Rechnungsformular erstellen (unten) 2 pabu 200 27. Aug 2008, 08:34
Gast Neue Position in Rechnungsformular erstellen (unten)
Keine neuen Beiträge Excel Hilfe: Muss ein CommandButton immer rechteckig sein? 0 Luja 302 19. Jun 2008, 14:07
Luja Muss ein CommandButton immer rechteckig sein?
Keine neuen Beiträge Excel Hilfe: Hilfe bei erstellen eines Excel Rechnungsmuster 2 katerotto 1820 28. Mai 2008, 12:14
katerotto Hilfe bei erstellen eines Excel Rechnungsmuster
Keine neuen Beiträge Excel Formeln: Rangliste erstellen 4 maxpower 403 13. März 2008, 16:04
Zero Rangliste erstellen
Keine neuen Beiträge Excel Auswertungen: Excel Diagramm erstellen mit Merkmalsausprägung über Jahre 0 gutentag 1716 17. Jan 2008, 16:08
gutentag Excel Diagramm erstellen mit Merkmalsausprägung über Jahre
 

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