Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1492to1496
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 / Listbox

Combobox / Listbox
24.05.2016 12:53:33
Michael
Hallo Zusamenn, da ich nun nicht mehr mit 2 Listboxen arbeiten möchte,
lese meine Listbox folgendermassen ein:
With Me.ListBox2
.ColumnCount = 4
.ColumnHeads = True
.ColumnWidths = "1,5cm;0cm;0cm;6cm"
.RowSource = "Stammdaten!A2:D500" '##Personalnummer und Name in Userform einlesen##
End With
Nun möchte ich den Code unten anpassen so das nur die eigelesen werden, wo ich die Auswahl in der Combobox getroffen habe. Funktioniert aber nicht....Markiert mir Listbox2 clear gelb un sagt nicht genau bezeichneter Fehler
Kann mir da jemand helfen?
Gruß Michael
Private Sub ComboBox3_Change()
Dim liZeile As Integer
liZeile = 1
ListBox2.Clear
If ComboBox3.Value = "Alle_Abteilungen" Then
ListBox2.Clear 'Zuerst einmal die Liste leeren
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der dritten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))  ""
'Aktuelle Zeile in die ListBox eintragen
ListBox2.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End If
liZeile = liZeile + 1
Do Until Tabelle1.Range("I" & liZeile).Text = ""
If ComboBox3.Text = Tabelle1.Range("I" & liZeile).Text Then
ListBox2.AddItem Tabelle1.Range("A" & liZeile).Value
End If
liZeile = liZeile + 1
Loop
'############################  Lädt die Anzahl der Mitarbeiter in den Abteilungen in die  _
Textbox  #################################################################
If ComboBox3.ListIndex > -1 Then
TextBox1.Text = Worksheets("Altersstrucktur").Cells(ComboBox3.ListIndex + 2, 7)
TextBox2.Text = Worksheets("Altersstrucktur").Cells(ComboBox3.ListIndex + 2, 8)
TextBox3.Text = Worksheets("Altersstrucktur").Cells(ComboBox3.ListIndex + 2, 9)
Else
TextBox1 = ""
TextBox2 = ""
TextBox3 = ""
End If
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Combobox / Listbox
24.05.2016 13:33:10
Rudi
Hallo,
Listbox2.Rowsource= ""
Listbox2.Clear
Worksheets("Altersstrucktur")
besser:
Worksheets("Altersstruktur")
Gruß
Rudi

AW: Combobox / Listbox
24.05.2016 13:47:04
Michael
Hallo Rudi, den Rechtschreibfehler werde ich beheben :-)
Danke für deine Antwort! Einlesen klappt nun.
Wie bekomme ich es jetzt noch hin das mir die 4Spalte der Tabelle1 jetzt noch in die Liste geladen wird?
Gruß Michael

AW: Combobox / Listbox
24.05.2016 14:02:06
Michael
Häkchen vergessen

AW: Combobox / Listbox
24.05.2016 14:43:10
Rudi
Hallo,
ListBox2.List = Sheets("Stammdaten").Range("A2:D500").Value
Gruß
Rudi

AW: Combobox / Listbox
24.05.2016 19:32:17
Michael
Guten Abend, wenn ich alle Abteilungen auswähle werden die 2 Spalten eingelesen, wähle ich eine einzelne Abteilung aus wird mir nur eine Spalte gefüllt.Was muss ich im Code noch ändern?
Gruß Michael
Private Sub UserForm_Initialize()
With Me.ListBox2
.ColumnCount = 4
.ColumnWidths = "1cm;0cm;0cm;6cm"
End With
End Sub

Private Sub UserForm_Activate()
Dim liZeile As Integer
ComboBox3.AddItem Tabelle2.Range("A1").Value
liZeile = 2
Do Until Tabelle2.Range("A" & liZeile).Value = ""
If Tabelle2.Range("A" & liZeile).Value  Tabelle2.Range("A" & liZeile - 1). _
Value Then
Me.ComboBox3.AddItem Worksheets(7).Cells(liZeile, 1).Text
End If
liZeile = liZeile + 1
Loop
ComboBox3.Text = Worksheets("Kostenstellen").Range("A1")
End Sub

Private Sub ComboBox3_Change()
Dim liZeile As Integer
liZeile = 1
ListBox2.RowSource = ""
ListBox2.Clear
If ComboBox3.Value = "Alle_Abteilungen" Then
ListBox2.Clear 'Zuerst einmal die Liste leeren
lzeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der dritten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lzeile, 1).Value))  ""
'Aktuelle Zeile in die ListBox eintragen
ListBox2.List = Sheets("Stammdaten").Range("A2:D500").Value
lzeile = lzeile + 1 'Nächste Zeile bearbeiten
Loop
End If
liZeile = liZeile + 1
Do Until Tabelle1.Range("I" & liZeile).Text = ""
If ComboBox3.Text = Tabelle1.Range("I" & liZeile).Text Then
'ListBox2.AddItem Tabelle1.Range("D" & liZeile).Value
ListBox2.AddItem Tabelle1.Range("A" & liZeile).Value
End If
liZeile = liZeile + 1
Loop
End Sub

Anzeige
AW: Combobox / Listbox
25.05.2016 09:53:03
Rudi
Hallo,
ich würde das so machen:
Option Explicit
Dim blnInit As Boolean
Private Sub UserForm_Initialize()
Dim objCbx As Object, arrCbx, i As Long
Set objCbx = CreateObject("Scripting.dictionary")
blnInit = True
With Me.ListBox2
.ColumnCount = 4
.ColumnWidths = "1cm;0cm;0cm;6cm"
End With
With Sheets("Stammdaten")
arrCbx = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp))
ListBox2.List = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 4).Value
End With
For i = 1 To UBound(arrCbx)
objCbx(arrCbx(i, 1)) = 0
Next
ComboBox3.List = objCbx.keys
blnInit = False
End Sub
Private Sub ComboBox3_Change()
If Not blnInit Then
With ListBox2
.Clear
.List = fncListe(ComboBox3.Value)
End With
End If
End Sub
Private Function fncListe(sMatch As String)
Dim objListe As Object, oListe, arrListe, arrTmp()
Dim i As Long, j As Integer, n As Integer
Set objListe = CreateObject("Scripting.dictionary")
With Sheets("Stammdaten")
arrListe = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 4)
End With
If sMatch = "" Then
arrTmp = arrListe
Else
For i = 1 To UBound(arrListe)
If arrListe(i, 1) = sMatch Then
objListe(i) = Array( _
"", _
arrListe(i, 1), _
arrListe(i, 2), _
arrListe(i, 3), _
arrListe(i, 4))
End If
Next i
If objListe.Count Then
ReDim arrTmp(1 To objListe.Count, 1 To 4)
For Each oListe In objListe
n = n + 1
For j = 1 To 4
arrTmp(n, j) = objListe(oListe)(j)
Next
Next
End If
End If
fncListe = arrTmp
Set objListe = Nothing
End Function

Gruß
Rudi

Anzeige
AW: Combobox / Listbox
25.05.2016 19:04:49
Michael
Hallo Rudi,
leider ist es nicht ganz richtig.
In die Combobox wollte ich aus dem Tabellenblatt "Kostenstellen" aus Spalte A die Abteilungen einlesen.
Wenn ich dann eine Abteilung auswähle, soll ein Vergleich mit dem Tabellenblatt "Stammdaten" Spalte I gemacht werden.
Wenn er alle Abteilungen dort gefunden hat, sollten die dazugehörigen Spalten A - D (dort stehen Personalnummer,Anrede, Vorname und Name) in die ListBox2 eingelesen werden. Anrede und Vorname können dann ausgeblendet werden.
Ich habe versucht deinen Code so zu ändern, aber leider ohne Erfolg.
Wäre dir sehr dankbar wenn du das noch machen könntest. Vielen Dank bis hierher.
Gruß Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige