Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Userform Activate

Userform Activate
27.02.2009 14:17:41
Frank
Hallo!
Ich habe in die Userform eine Mulitseite eingebaut und möchte auf Page 3 die Combobox7 genauso einrichten wie die unten aufgeführte Combobox4. Mein Problem ist nun, wie ich eine weitere Box in diesem Code einbaue. Wie gesagt, sie soll auf denselben Datenbereich zugreifen.

Private Sub UserForm_Activate()
Sheets("B & A").Select
Dim lZeile  As Long
Dim lCoBox  As Long
With Worksheets("B & A")
With Me.ComboBox4
.ColumnCount = 3
.ColumnWidths = "1 cm; 1 cm; 1 cm"
For lZeile = 4 To Range("BZ94").End(xlUp).Row
.AddItem " "
.List(lCoBox, 0) = Range("BZ" & lZeile).Value
.List(lCoBox, 1) = Range("CA" & lZeile).Value
.List(lCoBox, 2) = Range("CB" & lZeile).Value
lCoBox = lCoBox + 1
Next lZeile
End With
End With
Sheets("B & A").Select
End Sub


Gruß Frank

Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Erledigt - andere Lösung gefungen
27.02.2009 14:47:27
Frank
Trotzdem Danke!
ein - andere Lösung gefungen
27.02.2009 14:53:22
Mike
Hey Frank,
schön für die andere Lösung, und wärs aber nicht
nett, jenen, die sich bereits mit Deinem Problem
befassten über die Lösung zu informieren?
Gruss
Mike
AW: ein - andere Lösung gefungen
27.02.2009 15:02:32
Frank
Hallo! Gerne...
Ich habe nunfür die andere Combobox ein separates Sub

Private Sub UserForm_Initialize ()
'....kürze ich mal raus
ComboBox7.Rowsource = "'B & A'!BZ4:CB94
End Sub


Dann die Box in den Eigenschaften etwas anpassen und klappt auch....
Gruß Frank

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Userform Aktivieren in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Userform in Excel VBA zu aktivieren, kannst du den Private Sub UserForm_Activate() verwenden. Hier ist eine Schritt-für-Schritt-Anleitung, wie du dies umsetzen kannst:

  1. Öffne den VBA-Editor in Excel mit ALT + F11.

  2. Füge eine Userform hinzu: Klicke mit der rechten Maustaste im Projektfenster und wähle Einfügen > UserForm.

  3. Erstelle die Steuerelemente: Füge die benötigten Steuerelemente wie Comboboxen hinzu.

  4. Öffne den Code-Editor der Userform und füge den folgenden Code ein:

    Private Sub UserForm_Activate()
       Sheets("B & A").Select
       Dim lZeile As Long
       Dim lCoBox As Long
       With Worksheets("B & A")
           With Me.ComboBox4
               .ColumnCount = 3
               .ColumnWidths = "1 cm; 1 cm; 1 cm"
               For lZeile = 4 To Range("BZ94").End(xlUp).Row
                   .AddItem " "
                   .List(lCoBox, 0) = Range("BZ" & lZeile).Value
                   .List(lCoBox, 1) = Range("CA" & lZeile).Value
                   .List(lCoBox, 2) = Range("CB" & lZeile).Value
                   lCoBox = lCoBox + 1
               Next lZeile
           End With
       End With
       Sheets("B & A").Select
    End Sub
  5. Teste die Userform: Führe die Userform aus, um zu sehen, ob die Comboboxen korrekt befüllt werden.


Häufige Fehler und Lösungen

  • Fehler: Combobox bleibt leer
    Lösung: Überprüfe den Datenbereich, den du in der Userform verwendest. Stelle sicher, dass die Referenz korrekt auf die Zellen zeigt.

  • Fehler: Userform öffnet sich nicht
    Lösung: Stelle sicher, dass im Hauptmodul ein Aufruf zur Userform vorhanden ist, beispielsweise:

    UserForm1.Show
  • Fehler: Activate UserForm wird nicht aufgerufen
    Lösung: Überprüfe, ob die UserForm_Activate korrekt geschrieben ist und nicht durch andere Subroutinen überschrieben wird.


Alternative Methoden

Neben der Verwendung von UserForm_Activate, kannst du auch die UserForm_Initialize Methode nutzen, um deine Comboboxen zu befüllen. Diese Methode wird aufgerufen, wenn die Userform geladen wird, aber bevor sie angezeigt wird. Hier ein Beispiel:

Private Sub UserForm_Initialize()
    ComboBox7.RowSource = "'B & A'!BZ4:CB94"
End Sub

Diese Methode ist nützlich, wenn die Daten bereits beim Laden der Userform zur Verfügung stehen.


Praktische Beispiele

Hier ist ein weiteres Beispiel, wie du eine zusätzliche Combobox in deiner Userform aktivieren kannst:

Private Sub UserForm_Activate()
    ' Fülle ComboBox4
    Call FillComboBox(Me.ComboBox4)
    ' Fülle ComboBox7
    Call FillComboBox(Me.ComboBox7)
End Sub

Private Sub FillComboBox(cmb As MSForms.ComboBox)
    Dim lZeile As Long
    Dim lCoBox As Long
    With Worksheets("B & A")
        cmb.ColumnCount = 3
        cmb.ColumnWidths = "1 cm; 1 cm; 1 cm"
        For lZeile = 4 To .Range("BZ94").End(xlUp).Row
            cmb.AddItem " "
            cmb.List(lCoBox, 0) = .Range("BZ" & lZeile).Value
            cmb.List(lCoBox, 1) = .Range("CA" & lZeile).Value
            cmb.List(lCoBox, 2) = .Range("CB" & lZeile).Value
            lCoBox = lCoBox + 1
        Next lZeile
    End With
End Sub

Tipps für Profis

  • Verwende Option Explicit: Das zwingt dich, alle Variablen zu deklarieren, was Fehler reduziert.
  • Debugging: Nutze Debug.Print um Werte während der Laufzeit zu überprüfen.
  • Mehrere Comboboxen: Wenn du viele Comboboxen hast, überlege dich, eine Funktion zu erstellen, die den Code für das Befüllen der Comboboxen vereinfacht.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen UserForm_Activate und UserForm_Initialize?
UserForm_Activate wird aufgerufen, wenn die Userform angezeigt wird, während UserForm_Initialize beim Laden der Userform ausgeführt wird.

2. Wie kann ich mehrere Comboboxen gleichzeitig befüllen?
Du kannst eine Funktion erstellen, die den Code zum Befüllen der Comboboxen kapselt und diese Funktion dann für jede Combobox aufrufen.

3. Was tun, wenn die Userform nicht reagiert?
Überprüfe, ob es Fehler im Code gibt oder ob die Userform im Hintergrund geöffnet ist. Debugge den Code, um festzustellen, wo das Problem liegt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige