Anzeige
Archiv - Navigation
1496to1500
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

Listbox

Listbox
03.06.2016 10:20:01
Michael
Guten Morgen zusammen,
Dank Rudi habe ich folgenden Code:
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

leider füllt er die Combobox mit den Personalnummern aus Tabelleblatt(1) "Stammdaten" und listet mir den dazugehörigen Namen und Personalnummer in der Listbox auf.
In die Combobox wollte aber ich aus dem Tabellenblatt(2) "Kostenstellen" aus Spalte A die Abteilungen einlesen.
Wenn ich dann eine Abteilung auswähle, soll ein Vergleich mit dem Tabellenblatt(1) "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 Rudis Code so zu ändern, aber leider ohne Erfolg.
Könnte mir da jemand helfen?
Bekomme leider keine Rückmeldung mehr.
Gruß Michael

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Listbox
03.06.2016 19:09:47
Piet
Hallo Michael,
da hast du eine schöne Arbeit von Rudi, ich habe nicht alles verstanden. Er ist exellent.
Nach meinen Kenntnissen liegt das Problem in der Function, und zwar hier:
With Sheets("Stammdaten")
arrListe = .Range(.Cells(2, 1), .Cells(Rows.Count, 1).End(xlUp)).Resize(, 4)
End With
Dort erscheint als Tabelle "Stammdaten", gefolgt von einer Range Zuweisung
Aendere bitte den Tabellen Namen auf "Kostenstellen", dann sollte es klappen.
Würde mich sehr freuen wenn es an dieser Kleinigkeit daran gelegen hat.
mfg Piet

AW: Listbox
03.06.2016 19:24:10
Piet
Sorry, wieder offen gestellt

Anzeige
AW: Listbox
05.06.2016 18:16:42
Michael
Hallo Piet,
das habe ich auch schon probiert! Bekomme dann einen anderen Fehler angezeigt.
Private Sub ComboBox3_Change()
If Not blnInit Then
With ListBox2
.Clear
 .List = fncListe(ComboBox3.Value) 'genau hier                                    '( _
Laufzeitfehler 380 Eigenschaft List konnte nicht gesetzt  werden. Ungültiger Eigenschaftswert)
End With
End If
End Sub
Danke für deinen Versuch der Hilfe.
Gruß Michael

AW: Listbox
05.06.2016 19:26:00
Piet
Hallo Michael
.List = fncListe(ComboBox3.Value)
ich bin kein UserForm Fachmann, kann nur raten, habe die Datei nicht vor mir.
In solchen Faellen experimentiere ich in der Hoffnung das es irgendwann klappt.
Probier mal die Varianten: (ohne zu wissen ob es klappt?)
List = fncListe(ComboBox3.Text) - oder - List = fncListe(ComboBox3)
mfg Piet

Anzeige
AW: Listbox - offen gestellt oWT
05.06.2016 19:28:03
Piet
,,,

Beispieldatei?
06.06.2016 18:57:40
Michael
Hi zusammen,
mache mal ein paar Änderungen rein, und zwar:
Private Sub ComboBox3_Change()
dim a
If Not blnInit Then
msgbox ComboBox3.Value         ' wirklich Wert vorhanden?!
a = fncListe(ComboBox3.Value)
msgbox ubound(a)               ' ist leer, falls -1
stop                           ' bei stop springt das Makro in
' den VB-Editor, so daß es mit F8
' zeilenweise abgearbeitet werden kann bzw. beendet
With ListBox2
.Clear
.List = fncListe(ComboBox3.Value)
End With
End If
End Sub

Wenn Dir das nicht hilft, den Fehler zu finden, lad uns bitte eine anonymisierte Datei hoch: so Zeug nachzubasteln, kostet zu viel Zeit.
Schöne Grüße,
Michael

Anzeige
AW: Beispieldatei?
06.06.2016 19:45:14
Michael
Hallo zusammen,
erstmal Danke an Piet, aber ich denke dein Ansatz ist falsch, weil die Combobox an anderer Stelle eingelesen wird, soweit ich den Code verstehe.
Hallo Michael,
Habe mal eine abgespeckte Datei auf den Server geladen, ich hoffe ihr kommt damit klar.
https://www.herber.de/bbs/user/106036.xlsm
Gruß Michael

leider nein
06.06.2016 20:36:09
Michael
Hi Michael,
die Datei mault "Projekt oder Bibliothek nicht gefunden".
Keine Ahnung, wo und warum.
Gruß,
Michael

alle. Sheets(X) auf TabelleX ändern... Gruß
07.06.2016 07:01:06
robert

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige