Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
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

Frage zur ListBox

Frage zur ListBox
25.10.2015 18:25:30
Frank
Hallo Zusammen!
Mittels einem Klickereignis der ListBox schreibe ich die Daten in Textfelder, es können Textfelder leer bleiben und diese befülle ich dann manuell mit Daten. Dann Klick auf einen Button und alles wird in die Tabelle geschrieben. Funzt bestens! Nun möchte ich aber gern, dass wenn ich auf meinen Button klicke und alles in die Tabelle geschrieben wurde,der nächste ListBoxeintrag selectiert wird und die Daten wie im Klickereignis in die Textfelder geschrieben wird. Hier mein Klickereignis:
With frmFinals
TextBox1 = .ListBox1.Column(0, .ListBox1.ListIndex)
TextBox2 = .ListBox1.Column(1, .ListBox1.ListIndex)
TextBox3 = .ListBox1.Column(2, .ListBox1.ListIndex)
TextBox4 = .ListBox1.Column(3, .ListBox1.ListIndex)
ComboBox2 = .ListBox1.Column(4, .ListBox1.ListIndex)
TextBox5 = .ListBox1.Column(5, .ListBox1.ListIndex)
ComboBox3 = .ListBox1.Column(6, .ListBox1.ListIndex)
ComboBox4 = .ListBox1.Column(7, .ListBox1.ListIndex)
TextBox6 = .ListBox1.Column(8, .ListBox1.ListIndex)
TextBox7 = .ListBox1.Column(9, .ListBox1.ListIndex)
TextBox8 = .ListBox1.Column(10, .ListBox1.ListIndex)
TextBox9 = .ListBox1.Column(11, .ListBox1.ListIndex)
TextBox10 = .ListBox1.Column(12, .ListBox1.ListIndex)
TextBox11 = .ListBox1.Column(13, .ListBox1.ListIndex)
End With
Wie muss ich meinen Code im Button erweitern oder geht mein Vorhaben gar nicht? Danke im Voraus!
Gruß Frank H.

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

Betreff
Datum
Anwender
Anzeige
AW: Frage zur ListBox
25.10.2015 18:40:56
Nepumuk
Hallo,
teste mal:
With ListBox1
    If .ListIndex < .ListCount - 1 Then .ListIndex = .ListIndex + 1
End With

Gruß
Nepumuk

AW: Frage zur ListBox
25.10.2015 18:48:55
Frank
Hallo Nepumuk!
Danke für deine schnelle Antwort. Nur leider wird nicht der nächste ListBoxeintrag markiert und in die Textfelder geschrieben, sondern der erste Eintrag der ListBox. Weißt du Rat?
Gruß Frank H.

Anzeige
AW: Frage zur ListBox
25.10.2015 19:15:49
Nepumuk
Hallo,
kann ich nicht nachvollziehen. Kannst du eine Mustermappe hochladen?
Gruß
Nepumuk

AW: Frage zur ListBox
25.10.2015 19:42:22
Frank
Nochmal Hallo,
ich poste mal den Code des Buttons. Ich vermute mal durch das die ListBox aktualisiert wird kann es nicht funzen!
Application.ScreenUpdating = False
If TextBox1 = "" Then
MsgBox "Bitte wählen Sie erst aus der Liste einen Eintrag aus!"
Exit Sub
End If
For lng = 3 To 78
If Sheets("Daten").Cells(lng, 100) = CDbl(TextBox1) Then
If TextBox2 = "" Then
Sheets("Daten").Cells(lng, 101) = ""
Else
Sheets("Daten").Cells(lng, 101) = CDate(TextBox2)
End If
Sheets("Daten").Cells(lng, 102) = TextBox3
If TextBox4 = "" Then
Sheets("Daten").Cells(lng, 103) = ""
Else
Sheets("Daten").Cells(lng, 103) = CDate(TextBox4)
End If
Sheets("Daten").Cells(lng, 104) = ComboBox2
Sheets("Daten").Cells(lng, 105) = TextBox5
Sheets("Daten").Cells(lng, 106) = ComboBox3
Sheets("Daten").Cells(lng, 107) = ComboBox4
If TextBox6 = "" Then
Sheets("Daten").Cells(lng, 108) = ""
Else
Sheets("Daten").Cells(lng, 108) = CDbl(TextBox6)
End If
Sheets("Daten").Cells(lng, 109) = TextBox7
If TextBox8 = "" Then
Sheets("Daten").Cells(lng, 110) = ""
Else
Sheets("Daten").Cells(lng, 110) = CDbl(TextBox8)
End If
If TextBox9 = "" Then
Sheets("Daten").Cells(lng, 111) = ""
Else
Sheets("Daten").Cells(lng, 111) = CDbl(TextBox9)
End If
Sheets("Daten").Cells(lng, 112) = TextBox10
If TextBox11 = "" Then
Sheets("Daten").Cells(lng, 113) = ""
Else
Sheets("Daten").Cells(lng, 113) = CDbl(TextBox11)
End If
End If
Next
With Sheets("Daten")
Y = 126
c = ComboBox1.ListIndex + Y
For i = 2 To 3
r = .Cells(.Rows.Count, c).End(xlUp).Row
Me("ComboBox" & i).List = .Range(.Cells(3, c), .Cells(r, c)).Value
Next
End With
Dim Daten() As Variant, avntValues As Variant 'Ab hier läuft die Prozedur zum Befüllen der ListBox
Dim lngCount As Long
If ComboBox1.ListIndex = 1 Then
With Worksheets("Daten")
avntValues = .Range(.Cells(3, 100), .Cells(34, 113)).Value
End With
With frmFinals
.ListBox1.ColumnCount = 14
.ListBox1.ColumnWidths = "58;80;35;67;200;45;200;55;35;35;35;35;35"
.ListBox1.Clear
For lng = LBound(avntValues) To UBound(avntValues)
lngCount = lngCount + 1
ReDim Preserve Daten(0 To 15, 1 To lngCount)
Daten(0, lngCount) = avntValues(lng, 1)
Daten(1, lngCount) = avntValues(lng, 2)
Daten(2, lngCount) = avntValues(lng, 3)
Daten(3, lngCount) = Format(avntValues(lng, 4), "hh:mm")
Daten(4, lngCount) = avntValues(lng, 5)
Daten(5, lngCount) = avntValues(lng, 6)
Daten(6, lngCount) = avntValues(lng, 7)
Daten(7, lngCount) = avntValues(lng, 8)
Daten(8, lngCount) = avntValues(lng, 9)
Daten(9, lngCount) = avntValues(lng, 10)
Daten(10, lngCount) = avntValues(lng, 11)
Daten(11, lngCount) = avntValues(lng, 12)
Daten(12, lngCount) = avntValues(lng, 13)
Daten(13, lngCount) = avntValues(lng, 14)
Daten(14, lngCount) = lng + 2
Next lng
.ListBox1.Column = Daten
End With
End If
If ComboBox1.ListIndex = 2 Then
With Worksheets("Daten")
avntValues = .Range(.Cells(36, 100), .Cells(58, 113)).Value
End With
With frmFinals
.ListBox1.ColumnCount = 14
.ListBox1.ColumnWidths = "125;125;125;125;125;125;125;125;125;125;125;125;125"
.ListBox1.Clear
For lng = LBound(avntValues) To UBound(avntValues)
lngCount = lngCount + 1
ReDim Preserve Daten(0 To 15, 1 To lngCount)
Daten(0, lngCount) = avntValues(lng, 1)
Daten(1, lngCount) = avntValues(lng, 2)
Daten(2, lngCount) = avntValues(lng, 3)
Daten(3, lngCount) = Format(avntValues(lng, 4), "hh:mm")
Daten(4, lngCount) = avntValues(lng, 5)
Daten(5, lngCount) = avntValues(lng, 6)
Daten(6, lngCount) = avntValues(lng, 7)
Daten(7, lngCount) = avntValues(lng, 8)
Daten(8, lngCount) = avntValues(lng, 9)
Daten(9, lngCount) = avntValues(lng, 10)
Daten(10, lngCount) = avntValues(lng, 11)
Daten(11, lngCount) = avntValues(lng, 12)
Daten(12, lngCount) = avntValues(lng, 13)
Daten(13, lngCount) = avntValues(lng, 14)
Daten(14, lngCount) = lng + 2
Next lng
.ListBox1.Column = Daten
End With
End If
If ComboBox1.ListIndex = 3 Then
With Worksheets("Daten")
avntValues = .Range(.Cells(60, 100), .Cells(70, 113)).Value
End With
With frmFinals
.ListBox1.ColumnCount = 14
.ListBox1.ColumnWidths = "125;125;125;125;125;125;125;125;125;125;125;125;125"
.ListBox1.Clear
For lng = LBound(avntValues) To UBound(avntValues)
lngCount = lngCount + 1
ReDim Preserve Daten(0 To 15, 1 To lngCount)
Daten(0, lngCount) = avntValues(lng, 1)
Daten(1, lngCount) = avntValues(lng, 2)
Daten(2, lngCount) = avntValues(lng, 3)
Daten(3, lngCount) = Format(avntValues(lng, 4), "hh:mm")
Daten(4, lngCount) = avntValues(lng, 5)
Daten(5, lngCount) = avntValues(lng, 6)
Daten(6, lngCount) = avntValues(lng, 7)
Daten(7, lngCount) = avntValues(lng, 8)
Daten(8, lngCount) = avntValues(lng, 9)
Daten(9, lngCount) = avntValues(lng, 10)
Daten(10, lngCount) = avntValues(lng, 11)
Daten(11, lngCount) = avntValues(lng, 12)
Daten(12, lngCount) = avntValues(lng, 13)
Daten(13, lngCount) = avntValues(lng, 14)
Daten(14, lngCount) = lng + 2
Next lng
.ListBox1.Column = Daten
End With
End If
If ComboBox1.ListIndex = 4 Then
With Worksheets("Daten")
avntValues = .Range(.Cells(72, 100), .Cells(76, 113)).Value
End With
With frmFinals
.ListBox1.ColumnCount = 14
.ListBox1.ColumnWidths = "125;125;125;125;125;125;125;125;125;125;125;125;125"
.ListBox1.Clear
For lng = LBound(avntValues) To UBound(avntValues)
lngCount = lngCount + 1
ReDim Preserve Daten(0 To 15, 1 To lngCount)
Daten(0, lngCount) = avntValues(lng, 1)
Daten(1, lngCount) = avntValues(lng, 2)
Daten(2, lngCount) = avntValues(lng, 3)
Daten(3, lngCount) = Format(avntValues(lng, 4), "hh:mm")
Daten(4, lngCount) = avntValues(lng, 5)
Daten(5, lngCount) = avntValues(lng, 6)
Daten(6, lngCount) = avntValues(lng, 7)
Daten(7, lngCount) = avntValues(lng, 8)
Daten(8, lngCount) = avntValues(lng, 9)
Daten(9, lngCount) = avntValues(lng, 10)
Daten(10, lngCount) = avntValues(lng, 11)
Daten(11, lngCount) = avntValues(lng, 12)
Daten(12, lngCount) = avntValues(lng, 13)
Daten(13, lngCount) = avntValues(lng, 14)
Daten(14, lngCount) = lng + 2
Next lng
.ListBox1.Column = Daten
End With
End If
For lng = 3 To 62
Sheets("Daten").Cells(lng, 104).Interior.ColorIndex = xlNone
Sheets("Daten").Cells(lng, 106).Interior.ColorIndex = xlNone
If Sheets("Daten").Cells(lng, 125) <> "" Then
If Sheets("Daten").Cells(lng, 104) = Sheets("Daten").Cells(lng, 125) Then
Sheets("Daten").Cells(lng, 104).Interior.ColorIndex = 15
End If
If Sheets("Daten").Cells(lng, 106) = Sheets("Daten").Cells(lng, 125) Then
Sheets("Daten").Cells(lng, 106).Interior.ColorIndex = 15
End If
End If
Next
With ListBox1
If .ListIndex < .ListCount - 1 Then .ListIndex = .ListIndex + 1
End With
Dim lng_A, lng_Z As Long
lng_A = Label18.Width
Label18.Width = 0
DoEvents
lng_Z = 1000
For i = 1 To lng_Z
With Label18
.Width = i / lng_Z * lng_A
.TextAlign = fmTextAlignCenter
.BackColor = RGB(0, 0, 256)
.Font.Bold = True
.Caption = Int(i / 10) & "%"
DoEvents
End With
Next
Application.ScreenUpdating = True
Die Datei ist ein bischen zu groß. Vielleicht hilfts? Schau bitte mal drüber!
Gruß Frank H.

Anzeige
AW: Frage zur ListBox
25.10.2015 20:13:56
Nepumuk
Hallo,
durch das Füllen verlierst du den alten ListIndex. Schreib diesen einfach vor dem Füllen in eine Variable.
Gruß
Nepumuk

AW: Frage zur ListBox
25.10.2015 21:20:11
Frank
Hallo,
und wie mache ich das?
Gruß Frank H.

AW: Frage zur ListBox
25.10.2015 21:43:06
Daniel
im Prinzip so (Variablennamen und Listboxnamen ggf noch an deine Datei anpassen)
dim x as long
x = Listbox1.Listindex '(oder immer auch deine Listbox heisst)
... hier dann dann der weitere Code
if Listbox1.ListCount - 1 > x then Listbox1.ListIndex = x + 1
Gruss Daniel

AW: Frage zur ListBox
25.10.2015 21:56:34
Frank
Hallo Daniel!
So funzt es Super, muss wohl am Vornamen liegen, mein Sohn heißt auch Daniel!
Danke und Gute Nacht!
Gruß Frank H.
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige