Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Combobox die dritte

Combobox die dritte
23.04.2014 11:13:22
Peter
Moin,
Ich habe folgende Code für eine Combobox hinterlegt und an einen CmdBtn geknüpft.
Private Sub Worksheet_Activate()
Dim ws As Worksheet
CBTabellen.Clear
For Each ws In Worksheets
Select Case ws.Name
Case "Zieltabelle", "Auswertung"
Case Else
If ws.Range("I1")  "schon exportiert" Then _
CBTabellen.AddItem ws.Name
End Select
Next ws
CBTabellen.ListIndex = 0
End Sub
Es funktioniert auch hervorragend . Allerdings stehe ich vor dem Problem, dass sich die Einträge in der Combobox immer erst nach einem Blattwechsel aktualisieren (Worksheet_Activate).
Kann man das so steuern, dass die Aktualisierung der ComboBox Einträge auch ohne einen Blattwechsel stattfindet, oder gibt es eine VBA-Möglichkeit, den Blattwechsel zu "simulieren"?

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox die dritte
23.04.2014 11:31:26
Rudi
Hallo,
und an einen CmdBtn geknüpft
inwiefern?
Dann müsste es eine Private Sub Commandbutton1_Click() oder so sein.
Gruß
Rudi

AW: Combobox die dritte
23.04.2014 12:05:03
Peter
Sorry, war wohl irgendwie spät gestern abend und ich stehe heute auf der Leitung.
Blödsinn, was ich da geschrieben habe.
Also noch mal, aber genauer:
Ich habe eine andere Aktion an einen CmdBtn geknüpft, die mit der Auswahl aus der ComboBox (z.B. Januar) weiterarbeitet und Daten aus Januar in eine Zieltabelle kopiert.
Gleichzeitig wird bei dieser Aktion in Januar auch ein Flag gesetzt (Zelle I1 "Schon exportiert"), damit diese Tabelle später nicht mehr in der ComboBox auftaucht. Funktioniert allerdings nur bei Worksheet_Activate.
Mittlerweile gibt es 2 Fragen:
a: Kann man das so steuern, dass die Aktualisierung der ComboBox Einträge auch ohne einen Blattwechsel stattfindet, oder gibt es eine VBA-Möglichkeit, den Blattwechsel zu "simulieren"?
b: wenn alle Daten exportiert wurden, bleibt kein Eintrag mehr für die ComboBox übrig, was bei einem Wechsel auf das Tabellenblatt mit der ComboBox immer zu einer Fehlermeldung und zu einem Abbruch führt. Wie kann ich das abfangen?
Gruß,
Peter

Anzeige
AW: Combobox die dritte
23.04.2014 14:34:01
Rudi
Hallo,
lösche das Activate und häng den Code für die Combobox an deinen CmdBtn-Code.
Gruß
Rudi

AW: Combobox die dritte
23.04.2014 15:39:15
Peter
Hallo Rudi,
das habe ich versucht, aber das System verweigert mir den Dienst, weil der Name der Combobox, den ich im Code verwende, keine deklarierte Variable ist.
Kann ich eine Variable als Combobox definieren? Das würde mich jetzt tatsächlich verblüssen.
Gruß,
Peter

AW: Combobox die dritte
23.04.2014 20:00:24
Uwe
Hallo Peter,
nur mal ne Vermutung.
verwende statt CBTabellen.ListIndex = 0
Thisworkbook.Sheets("Deine Tabelle").CBTabellen.ListIndex = 0
und statt CBTabellen.Clear
Thisworkbook.Sheets("Deine Tabelle").CBTabellen.Clear
Grüße

Anzeige
AW: Combobox die dritte
23.04.2014 20:17:25
Peter
Super, das hat geklappt.
Aber eine Frage bleibt noch:
Wie bekomme ich die Fehlermeldung abgefangen, wenn die Liste in der ComboBox leer ist?

AW: Combobox die dritte
23.04.2014 20:28:21
Uwe
Hallo Peter,
evtl kannste das über ne MsgBox abfangen.
zb.
If Thisworkbook.Sheets("DeineTabelle").CBTabellen = "" Then
MsgBox "Combobox ist leer"
Exit Sub
End If
oder so ähnlich.
Grüße

AW: Combobox die dritte
23.04.2014 20:52:51
Peter
Das würde den User aber jedes mal dazu nötigen die MsgBox zu bestätigen. Ich versuche es mal OnError...dazu muss ich aber noch ein wenig lesen :-)

AW: Combobox die dritte
23.04.2014 21:18:45
Uwe
Dann lass die Zeile mit der MsgBox einfach weg.

Anzeige
AW: Combobox die dritte
23.04.2014 21:45:19
Uwe
If Thisworkbook.Sheets("DeineTabelle").CBTabellen = "" Then Exit Sub

mit On Error...
23.04.2014 21:55:34
Uwe
kann das dann in etwa so aussehen.
Private Sub Worksheet_Activate()
Dim ws As Worksheet
On Error GoTo Error
ThisWorkbook.Sheets("DeineTabelle").CBTabellen.Clear
For Each ws In Worksheets
Select Case ws.Name
Case "Zieltabelle", "Auswertung"
Case Else
If ws.Range("I1")  "schon exportiert" Then _
ThisWorkbook.Sheets("DeineTabelle").CBTabellen.AddItem ws.Name
End Select
Next ws
ThisWorkbook.Sheets("DeineTabelle").CBTabellen.ListIndex = 0
Error:
End Sub

Anzeige
AW: mit On Error...
24.04.2014 10:34:34
Peter
Ich habe es nur so gelöst:
Sub CBFuellen()
'füllt die ComboBox mit den Werten aller benötigten Tabellenblätter
'Einträge der Combobox werde aktualisert wenn:
'Workbook geöffnet wird, Zieltabelle aktiviert wird, Datenübertragung durchgeführt wurde
Dim ws As Worksheet
ThisWorkbook.Sheets("Zieltabelle").Activate
Cells(2, 1).Select
ThisWorkbook.Sheets("Zieltabelle").CBTabellen.Clear
For Each ws In Worksheets
Select Case ws.Name
Case "Zieltabelle", "Auswertung", "Ergebnis"
Case Else
If ws.Range("I1")  "schon exportiert" Then _
ThisWorkbook.Sheets("Zieltabelle").CBTabellen.AddItem ws.Name
End Select
Next ws
'IF Anweisung verhindert Abbruch, falls Combobox leer
'Bei Änderungen wird immer der erste Eintrag der Liste angezeigt.
If ThisWorkbook.Sheets("Zieltabelle").CBTabellen.ListCount = 0 Then
ThisWorkbook.Sheets("Zieltabelle").CBTabellen.ListIndex = -1
Else
ThisWorkbook.Sheets("Zieltabelle").CBTabellen.ListIndex = 0
End If
End Sub
Per Call CBFuellen rufe ich diese beim öffnen der Arbeitsmappe, beim aktivieren des Arbeitsblattes und nach Ausführung eines Programmteils auf.
Danke für eure Hilfe.

Anzeige
AW: mit On Error...
24.04.2014 11:33:40
Uwe
Schön wenn's funktioniert.
Grüße aus Dresden
Uwe

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige