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