Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1336to1340
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
Listbox mit Namen => Weitere Infos in Textbox
07.11.2013 16:30:24
Albert
Hallo zusammen,
ich verwende folgenden Code um mit einem selektierten Item in ner Listbox verschiedene Textboxen zu füllen.
Private Sub ListBox1_Click()
Dim Matrix As Range
Set Matrix = Sheets("Schichtgruppe A").Range("A5:G" & Range("G1000").End(xlUp).Row)
With ListBox1
.MultiSelect = fmMultiSelectSingle
If .ListIndex >= 0 Then
'Regel
TextBox1.Text = Application.VLookup(ListBox1.Text, Matrix, 7, False)
'Rolle
TextBox2.Value = Application.VLookup(ListBox1.Value, Matrix, 4, False)
'Datum des Wunsches
TextBox3.Value = Application.VLookup(ListBox1.Value, Matrix, 3, False)
'Dienstgruppe
TextBox4.Value = Application.VLookup(ListBox1.Value, Matrix, 2, False)
'Wochentag der Wunsches
TextBox5.Value = Format(TextBox3.Value, "DDD")
End If
End With
End Sub

Zur Erklärkung: ich hab in den Spalte A bis G sämtliche Informationen. In der Spalte A stehen Namen, genau wie in der Listbox. Wenn ich nun in der Listbox ein Name ausgewählt wird, sollten die Textboxen weitere Infos ausgeben.
Leider tut das nicht so... Was hab ich falsch gemacht?
Die Sheetnamen sind richtig. Ich hab den Code sowohl in der Userform als auch in einem Modul mit dem Call-Aufruf.
Wär euch echt dankbar!
Gruß
A.

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
@Hary, funktioniert, ABER eines hätt ich noc
07.11.2013 19:02:55
Albert
Und zwar müsste in der Spalte G berücksichtigt werden, ob ein "x" vorhanden ist oder nicht. Wenn ja, dann braucht die Zeile nicht berücksichtigt werden beim Laden der Listbox.
Rudi hat mir unten angefügten Code vorbereitet, aber ich blick nicht durch, wie das mit deinem Code zusammengehört.
Private Sub UserForm_Initialize()
Dim arrList(), rngC As Range, j As Integer, n As Integer
ReDim arrList(1 To WorksheetFunction.CountIf(Columns(5), "x"), 1 To 5)
For Each rngC In Range(Cells(5, 1), Cells(Rows.Count, 1).End(xlUp))
If rngC.Offset(, 4) = "x" Then
n = n + 1
For j = 0 To 4
arrList(n, j + 1) = rngC.Offset(, j)
Next
End If
Next
With ListBox1
.ColumnCount = 5
.ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
.List = arrList
End With
End Sub
Danke nochmals für deine Zeit und Mühe bisher.
Gruß
A.

Anzeige
AW: so?
08.11.2013 08:29:56
hary
Moin Albert
Haettest den Code gleich zeigen koennen.
Private Sub UserForm_Initialize()
Dim arrList(), rngC As Range, j As Integer, n As Integer, letzte As Long
ListBox1.Clear
With Sheets("Schichtgruppe A")
letzte = .Cells(.Rows.Count, 1).End(xlUp).Row
ReDim arrList(1 To Application.CountIf(.Range("G5:G" & letzte), "x"), 1 To 5)
For Each rngC In .Range(.Cells(5, 1), .Cells(.Rows.Count, 1).End(xlUp))
If rngC.Offset(, 6)  "x" Then
n = n + 1
For j = 0 To 4
arrList(n, j + 1) = rngC.Offset(, j)
Next
End If
Next
End With
With ListBox1
.ColumnCount = 5
.ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
.List = arrList
End With
End Sub
Private Sub ListBox1_Change()
'----- Nach auswahl ------
With ListBox1
.MultiSelect = fmMultiSelectSingle
If .ListIndex >= 0 Then
TextBox1.Text = .List(.ListIndex, 4) 'Wert aus Spalte 5 der listbox
TextBox2.Text = .List(.ListIndex, 3) 'Wert aus Spalte 4 der listbox
TextBox3.Text = .List(.ListIndex, 2) 'Wert aus Spalte 3 der listbox
TextBox4.Text = .List(.ListIndex, 1) 'Wert aus Spalte 2 der listbox
TextBox5.Value = Format(TextBox3.Value, "DDD")
End If
End With
End Sub

gruss hary

Anzeige
Jap.... geänderte Aufgabenstellung
08.11.2013 11:28:39
Albert
Moin Hary,
entschuldige die Verspätung. Dein Code klappt soweit.
Heute morgen hat sich meine Aufgabenstellung geändert.
Und zwar ist nun nicht nur das "x" entscheidend, sondern auch in der Spalte I ein "A", "B", "C", "D" oder "E".
Würdest du mir bitte zeigen oder helfen, wie das am besten ginge?
Danke im Voraus und Gruß
A.

AW: Jap.... geänderte Aufgabenstellung
08.11.2013 12:38:56
hary
Moin Albert
Erstemal aufklaeren.;-)
Bei x in SpalteG nicht in Listbox OK
Wenn in SpalteI ein A oder B oder... ist auch nicht in Listbox?
Bsp.: wenn SpalteG ein x und SpalteI ein A dann nicht listen?
was ist wenn
SpalteG kein x und SpalteI ein A ?
gruss hary

Anzeige
AW: Jap.... geänderte Aufgabenstellung
08.11.2013 13:11:01
Albert
Hallo Hary,
vielen Dank für deine Rückmeldung und Entschuldigung für meine mangelhafte Beschreibung.
Also...
Die Listbox soll befüllt werden, wenn in Spalte H ein "x" ist und in Spalte I ein "A" ober "B" oder "C" ist.
"A" ober "B" oder "C" sind Schichtgruppen.
Die Unterscheidung zwischen "A", "B" oder "C" versuchte ich mich mit OptionButtons in einem Frame zu lösen und habe nachfolgenden Code gebastelt.
Sub test()
Dim vStatus As Range
Dim vStatusW As String
Dim vWSG As Range
Dim vWSGW As String
vStatusW = "x"
Select Case ZSVerwaltung.OptionButton1.Value
Case True
vWSGW = "A"
Case False
Select Case ZSVerwaltung.OptionButton2.Value
Case True
vWSGW = "B"
Select Case ZSVerwaltung.OptionButton3.Value
Case True
vWSGW = "C"
Select Case ZSVerwaltung.OptionButton4.Value
Case True
vWSGW = "D"
Select Case ZSVerwaltung.OptionButton5.Value
Case True
vWSGW = "E"
Case False
MsgBox "Bitte erst die eigene Schichtgruppe auswählen", vbCritical
End Select
End Select
End Select
End Select
End Select
With Worksheets("Schichtgruppe")
letzteZeile = .Range("A5000").End(xlUp).Row
'Namensbereich festlegen
vArr = Worksheets("Schichtgruppe").Range("A15:A" & letzteZeile)
'Statusspalte festlegen
vStatus = .Range("H15:H" & letzteZeile)
'Wunschschichtgruppe festlegen
vWSG = .Range("I15:I" & letzteZeile)
ListBox1.Clear
For i = 1 To UBound(vArr)
If vArr(i, 8) = vStatusW And vArr(i, 9) = vWSGW Then
'------Listbox füllen ------
lngLastRow = Sheets("Schichtgruppe").Cells(Rows.Count, "A").End(xlUp).Row
With ListBox1
.ColumnCount = 1  ' Spaltenanzahl
.ColumnWidths = "2cm" 'Spaltenbreite
For lngCounter = 14 To lngLastRow
.AddItem Sheets("Schichtgruppe").Cells(lngCounter, "A").Value 'Eintrag Spalte1
.List(lngCounter - 14, 1) = Sheets("Schichtgruppe").Cells(lngCounter, "A").Row ' _
Zeilennummer Eintrag SpalteA
Next lngCounter
End With
End If
Next
End With
End Sub
... aber das will nicht wirklich. Es wird ein Laufzeitfehler 91 ausgegeben :(
Gruß
A.

Anzeige
AW: Jap.... geänderte Aufgabenstellung
08.11.2013 15:08:32
hary
Moin Albert
Erstmal zum ersten Problem. Teste mal es werden nur gelistet mit x in SpalteH und Buchstaben A bis E in SpalteI.
Private Sub UserForm_Initialize()
Dim arrList(), rngC As Range, j As Integer, n As Integer, letzte As Long
Dim a As Long
ListBox1.Clear
With Sheets("Schichtgruppe A")
letzte = .Cells(.Rows.Count, 1).End(xlUp).Row
a = Application.CountIf(.Range("H5:H" & letzte), "x")
If a = 0 Then Exit Sub
ReDim arrList(1 To a, 1 To 5)
For Each rngC In .Range(.Cells(5, 1), .Cells(.Rows.Count, 1).End(xlUp))
If rngC.Offset(, 7) = "x" And rngC.Offset(, 8)  "" And InStr(1, "ABCDE", rngC.Offset(,  _
8)) Then
n = n + 1
For j = 0 To 4
arrList(n, j + 1) = rngC.Offset(, j)
Next
End If
Next
End With
With ListBox1
.ColumnCount = 5
.ColumnWidths = "2cm;2cm;4cm;4cm;4cm"
.List = arrList
End With

gruss hary

Anzeige
@ hary... einfach bloß geil! Vielen vielen Dank ow
08.11.2013 17:43:43
Albert
asdf

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige