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

Combobox + OptionButton füllen Listbox

Forumthread: Combobox + OptionButton füllen Listbox

Combobox + OptionButton füllen Listbox
22.07.2014 13:22:54
Ben
Hallo liebes Forum,
ich benötige eure Hilfe bei dem folgenden Vorhaben:
In meiner Combobox1 werden Unternehmen aus der Tabelle "Hilfstabelle1" geladen. In Spalte A stehen die Namen.
Nach Auswahl eines Unternehmens werden dann bestimmte Werte angezeigt, die ebenfalls in dieser Tabelle aufgeführt sind (Spalte B bis D). Die Anzeige erfolgt in Listboxen (für jeden Wert eine separate Listbox).
bis dahin funktioniert die Sache schon einmal
Nun zum weiteren Vorhaben:
Wenn ein OptionButton aktiviert wird, soll je nach der Auswahl in Combobox1 entsprechende Daten geladen werden. Die Daten werden in einer weiteren Tabelle bereitgestellt "MAEntwicklung". In der ersten Spalte werden die Unternehmen aufgeführt und in den weitern Spalten die Mitarbeiterzahlen für ein entsprechendes Jahr und Unternehmen.
Bsp:
Combobox1 "Auswahlbox": (Hilfstabelle1 A2:A*) Bis nichts mehr kommt
Listbox1: Anschrift (Hilfstabelle1 B2:B*) Bis nichts mehr kommt
Listbox2: Gründung (Hilfstabelle1 C2:C*) Bis nichts mehr kommt
Listbox3: Aufnahme der Produktion (Hilfstabelle1 D2:D*) Bis nichts mehr kommt
bis hier hin läuft
Wird nun OptionButton1 ausgewählt:
Listbox4: Mitarbeiterentwicklung (Tabelle MAEntwicklung wird angesprochen, in der Spalte A das Unternehmen gesucht was in Combobox1 gewählt wurde und dann die Jahre mit entsprechender MA-Zahl übertragen) Die Jahre sind in Zeile 1, beginnend bei Spalte B.
Für eure Hilfe wäre ich sehr Dankbar.
Gruß
Ben

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Combobox + OptionButton füllen Listbox
23.07.2014 15:09:52
fcs
Hallo Ben,
das Makro für die Optionsschaltfläche kann etwa wie folgt aussehen.
Gruß
Franz
Private Sub OptionButton1_Change()
Dim wksMA As Worksheet
Dim rngFirma As Range, ZeileFirma As Long, SpalteJahr As Long
Dim varName, varGruendung
If Me.OptionButton1 = True Then
If Me.ComboBox1.ListIndex = -1 Then
MsgBox "Bitte erst eine Firma auswählen"
Me.OptionButton1 = False
Else
Set wksMA = Worksheets("MAEntwicklung")
varName = Me.ComboBox1.Value           'Name Firma
varGruendung = Val(Me.ListBox2.Value)  'Gründungsjahr
Me.ListBox4.Clear
With wksMA
'Firma in Spalte A suchen
Set rngFirma = .Columns(1).Find(What:=varName, LookIn:=xlValues, lookat:=xlWhole)
If rngFirma Is Nothing Then
MsgBox "Firma in Blatt """ & .Name & """ nicht gefunden!"
Else
ZeileFirma = rngFirma.Row
For SpalteJahr = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
If .Cells(1, SpalteJahr).Value >= varGruendung Then
With Me.ListBox4
.AddItem wksMA.Cells(1, SpalteJahr).Value
.List(.ListCount - 1, 1) = wksMA.Cells(ZeileFirma, SpalteJahr).Value
End With
End If
Next
End If
End With
End If
End If
End Sub

Anzeige
AW: Combobox + OptionButton füllen Listbox
24.07.2014 09:41:05
Ben
Hallo Franz,
vielen Dank für deine Rückmeldung.
Ich habe dein Programm direkt mal ausgeführt und es läuft auch super.
Leider habe ich nicht ganz verstanden was hier: varGruendung = Val(Me.ListBox2.Value) 'Gründungsjahr passiert.
Ich denke es ist auch deutlich einfacher, wenn ich meine Datei mal zur Verfügung stelle.
Hier siehst du auch meine bisherigen Versuche.
Ich habe auch etwas am OptionButten probiert, allerding über die ComboBox. Mein Problem ist, dass sich die Userform nicht automatisch aktualisiert nach Auswahl des OptionButtons.
Ich suche noch eine elegantere Darstellung. Momentan werden die Werte untereinander aufgeführt. Es würde natürlich reichen, nur die Werte zu nehmen, wenn eine Veränderung auftritt. Auch sollte das Jahr jeweils mit angezeigt werden.
Vielleicht hast du oder wer anders noch eine gute Idee.
https://www.herber.de/bbs/user/91698.xlsm

Anzeige
AW: Combobox + OptionButton füllen Listbox
24.07.2014 15:18:04
fcs
Hallo Ben,
hier der komplette Code des Userforms mit den Apassungen, so dass
1. die Listbox entsprechend der Auswahl für NL, Datum von, Datum bis und OptionButton gefüllt wird.
2. Die Listbox auch aktualisiert wird, wenn anschliesen eine der 4 Vorgaben geändert wird.
Das Gründungsjahr hab ich als Kriterium mit reingenommen, so dass nur Jahre ab dem Gründungsjahr in der Listbox angezeigt werden.
Gruß
Franz
Option Explicit
Private Sub UpdateListbox1()
Call obBeschäftigung_Change
Call OptionButton4_Change
'hier die Change-Ereignismakros der weiteren Option-Buttons ergänzen
End Sub
Private Sub cmbBis_Change()
Call UpdateListbox1
End Sub
'Programm: Nach Auswahl mit Combobox werden die entsprechenden Listboxen gefüllt.
Private Sub cmbListeNL_Change()
Dim liZeile As Integer
Dim liSpalte As Integer
liZeile = 2
liSpalte = 2
'Zurücksetzen der Listboxen
lbAnschrift.Clear
lbGründung.Clear
lbÜbernahme.Clear
lbAufnahmeP.Clear
ListBox1.Clear
ListBox6.Clear
' Einladen der Anschrift, Gründung, Übernahme und Aufnahme der Produktion NACH Auswahl  _
Combobox
'Daten einlesen bis Zeile leer
Do Until Worksheets("HilfstabelleNLTOP").Range("A" & liZeile).Value = ""
'Suche die Auswahl der CMB und fülle entsprechend
If cmbListeNL.Text = Worksheets("HilfstabelleNLTOP").Range("A" & liZeile).Value Then
lbAnschrift.AddItem Worksheets("HilfstabelleNLTOP").Range("B" & liZeile).Value
lbGründung.AddItem Worksheets("HilfstabelleNLTOP").Range("C" & liZeile).Value
lbÜbernahme.AddItem Worksheets("HilfstabelleNLTOP").Range("D" & liZeile).Value
lbAufnahmeP.AddItem Worksheets("HilfstabelleNLTOP").Range("E" & liZeile).Value
ListBox6.AddItem Worksheets("HilfstabelleNLTOP").Range("F" & liZeile).Value
End If
liZeile = liZeile + 1
Loop
liZeile = 2
Call UpdateListbox1
End Sub
Private Sub cmbVon_Change()
Call UpdateListbox1
End Sub
Private Sub obBeschäftigung_Change()
Dim wksMA As Worksheet
Dim rngFirma As Range, ZeileFirma As Long, SpalteJahr As Long
Dim varName, varGruendung, varBeginn, varEnde
If Me.obBeschäftigung = True Then
If Me.cmbListeNL.ListIndex = -1 Then
MsgBox "Bitte erst eine Niederlassung auswählen"
Me.obBeschäftigung = False
ElseIf Me.cmbVon.ListIndex = -1 Then
MsgBox "Bitte erst Jahr für Datum ""von"" auswählen"
Me.obBeschäftigung = False
ElseIf Me.cmbBis.ListIndex = -1 Then
MsgBox "Bitte erst Jahr für Datum ""bis"" auswählen"
Me.obBeschäftigung = False
Else
Set wksMA = Worksheets("NLSelektionBeschäftigung")
varName = Me.cmbListeNL.Value           'Name Firma
'Gründungsjahr, nur Jahre nach dem Gründungsjahr werden gelistet
varGruendung = Val(Me.lbGründung.List(0, 0))
varBeginn = Val(Me.cmbVon)
varEnde = Val(Me.cmbBis)
With Me.ListBox1
.Clear
.TextColumn = 0
.ColumnCount = 2              'Spaltenzahl ggf. anpassen
.ColumnWidths = "40Pt;40Pt"   'Spaltenbreiten in Listbox ggf. anpassen
.Width = 95                   'Breite Listbox ggf. anpassen
End With
With wksMA
'Firma in Spalte A suchen
Set rngFirma = .Columns(1).Find(What:=varName, LookIn:=xlValues, lookat:=xlWhole)
If rngFirma Is Nothing Then
MsgBox "Firma in Blatt """ & .Name & """ nicht gefunden!"
Else
ZeileFirma = rngFirma.Row
For SpalteJahr = 2 To .Cells(1, .Columns.Count).End(xlToLeft).Column
If .Cells(1, SpalteJahr).Value >= varGruendung _
And .Cells(1, SpalteJahr).Value >= varBeginn _
And .Cells(1, SpalteJahr).Value  Worksheets("HilfstabelleNLTOP").Range("A" & liZeile - 1).Value Then
cmbListeNL.AddItem Worksheets("HilfstabelleNLTOP").Range("A" & liZeile).Value
End If
liZeile = liZeile + 1
Loop
'Von Datum Laden
Do Until Worksheets("NLSelektionBeschäftigung").Cells(1, liSpalte).Value = ""
If Worksheets("NLSelektionBeschäftigung").Cells(1, liSpalte).Value  _
Worksheets("NLSelektionBeschäftigung").Cells(1, liSpalte - 1).Value Then
cmbVon.AddItem Worksheets("NLSelektionBeschäftigung").Cells(1, liSpalte).Value
cmbBis.AddItem Worksheets("NLSelektionBeschäftigung").Cells(1, liSpalte).Value
End If
liSpalte = liSpalte + 1
Loop
cmbListeNL.Text = "Bitte wählen Sie eine Niederlassung"
ListBox1.AddItem "Bitte wählen Sie den Datumsbereich und treffen Sie eine Auswahl"
End Sub

Anzeige
;

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