AW: Werte von Listenfeld1 in Listenfeld2 übertragen
19.01.2015 22:34:26
Philipp Bolay
Hallo,
danke für die Rückmeldung. Beide Lösungen haben funktioniert. Habe jetzt das mit den Spinnbuttons umgesetzt. Super!
Frage 1.
Markiere ich in Listbox1 den obersten Eintrag und drücke Spinbutton1 so kopiert er alle verfügbaren strecken in Listbox2. Das sollte eigentlich nur die einzelne markierte Strecke sein.
Frage 2.
Gibt es die Möglichkeit das die Strecke dann trotzdem in Listbox1 bleibt. Also auch mehrfach in Listbox2 kopiert werden kann? Ich möchte mir dann nur einen Spinbutton zum kopieren von Listbox1 in Listbox2 machen und dann einen Button um in Listbox2 Strecken zu entfernen.
Frage3.
Ok es geht weiter. Ich möchte über einen Speichern/Aktualisieren Button (CommandButton6) die Namen der Listbox2 in das aktuelle Tabellenblatt speichern (funzt)
Jetzt möchte ich aber dass er gleichzeitig aus dem Streckenspeicher die jeweiligen Werte, zur Zeile passenden Werte dazu kopiert.
Also eigentlich simpel: Listindex2: Suche Name der Strecke (Bspw StreckeA) in Tabelle2 und kopiere entsprechende Zeile von Spalte B bis xx und füge diese im aktuellen Blatt hinter dem richtigen Namen (Aus listbox2 exportiert =StreckeA) ein.
Hier mal mein Code.. Das kopieren funktioniert. Leider sucht er sich nicht den richtigen Namen sondern kopiert einfach nacheinander... Zudem kommt er manchmal mit dem zählen durcheinander.
Private Sub CommandButton6_Click()
Dim i As Integer
Dim h As Long
Columns("A:X").Select
Selection.ClearContents
For i = 0 To ListBox2.ListCount - 1
Cells(i + 2, 1) = ListBox2.List(i)
With Sheets("Tabelle1")
For h = .Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If .Cells(h, "A") Like ListBox2.List(i) Then
Range(Cells(h, 2), Cells(h, 20)).Value = .Range(.Cells(h, 2), .Cells(h, 20)).Value
End If
Next h
End With
Next i
End Sub
Richtig gut wie ich vorran kommen. Danke für eure Unterstützung!! Ich lerne wirklich was dabei und war heute gute 8 Stunden beschäftigt damit ;)
Grüße und besten Dank!
Private Sub CommandButton5_Click()
Dim i As Long
With Me.ListBox3
For i = 0 To .ListCount - 1
If .Selected(i) Then
Me.ListBox2.AddItem .List(i)
.RemoveItem i
Exit For
End If
Next
End With
End Sub
Private Sub CommandButton6_Click()
Dim i As Integer
Dim h As Long
h = 0
i = 0
Columns("A:X").Select
Selection.ClearContents
For i = 0 To ListBox2.ListCount - 1
Cells(i + 2, 1) = ListBox2.List(i)
With Sheets("Tabelle1")
For h = .Cells(Rows.Count, "A").End(xlUp).Row To 2 Step -1
If .Cells(h, "A") Like ListBox2.List(i) Then
Range(Cells(h, 2), Cells(h, 20)).Value = .Range(.Cells(h, 2), .Cells(h, 20)).Value
End If
Next h
End With
Next i
End Sub
Private Sub CommandButton7_Click()
With Me.ListBox2
If .ListIndex > -1 Then .RemoveItem (.ListIndex)
End With
End Sub
'Startroutine, wird ausgeführt bevor die Eingabemaske angezeigt wird
Private Sub UserForm_Initialize()
Dim lZeile As Long
Dim Zeile As Long
'In dieser Routine laden wir alle vorhandenen
'Einträge in die ListBox1
ListBox1.Clear 'Zuerst einmal die Liste leeren
ListBox3.Clear
lZeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
Zeile = 2 'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
'Aktuelle Zeile in die ListBox eintragen
ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 1).Value))
ListBox3.AddItem Trim(CStr(Tabelle5.Cells(Zeile, 1).Value))
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Zeile = Zeile + 1
Loop
'With Sheets("Tabelle2")
'Me.ComboBox1.List = Range("A1:A5").Value
'End With
End Sub
'Klick auf die ListBox Ereignisroutine
Private Sub ListBox1_Click()
Dim lZeile As Long
'Nur wenn ein Eintrag selektiert/markiert ist
If ListBox1.ListIndex >= 0 Then
lZeile = 2
'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle1.Cells(lZeile, 1).Value)) <> ""
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
lZeile = lZeile + 1 'Nächste Zeile bearbeiten
Loop
End If
End Sub
'LIstbox3 !!!!!!!!!!!!!!!!!!!!
'Klick auf die ListBox Ereignisroutine
Private Sub ListBox3_Click()
Dim Zeile As Long
'Nur wenn ein Eintrag selektiert/markiert ist
If ListBox3.ListIndex >= 0 Then
Zeile = 2 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
Do While Trim(CStr(Tabelle5.Cells(Zeile, 1).Value)) <> ""
Exit Do 'Vorzeitiges Ende, da der Datensatz schon gefunden ist
Zeile = Zeile + 1 'Nächste Zeile bearbeiten
Loop
End If
End Sub
Private Sub SpinButton1_SpinDown()
Dim lngListIndex As Long
With ListBox2
Do While lngListIndex < .ListCount
If .Selected(lngListIndex) Then
ListBox1.AddItem .List(lngListIndex, 0)
.RemoveItem lngListIndex
Else
lngListIndex = lngListIndex + 1
End If
Loop
End With
End Sub
Private Sub SpinButton1_SpinUp()
Dim lngListIndex As Long
With ListBox1
Do While lngListIndex < .ListCount
If .Selected(lngListIndex) Then
ListBox2.AddItem .List(lngListIndex, 0)
.RemoveItem lngListIndex
Else
lngListIndex = lngListIndex + 1
End If
Loop
End With
End Sub
Private Sub SpinButton2_SpinDown()
Dim lngListIndex As Long
With ListBox2
lngListIndex = .ListCount - 1
If Not .Selected(lngListIndex) Then
Do While lngListIndex >= 0
If .Selected(lngListIndex) Then
.AddItem .List(lngListIndex, 0), lngListIndex + 2
.RemoveItem lngListIndex
.Selected(lngListIndex + 1) = True
End If
lngListIndex = lngListIndex - 1
Loop
End If
End With
End Sub
Private Sub SpinButton2_SpinUp()
Dim lngListIndex As Long
lngListIndex = 1
With ListBox2
If Not .Selected(0) Then
Do While lngListIndex < .ListCount
If .Selected(lngListIndex) Then
.AddItem .List(lngListIndex, 0), lngListIndex - 1
.RemoveItem lngListIndex + 1
.Selected(lngListIndex - 1) = True
End If
lngListIndex = lngListIndex + 1
Loop
End If
End With
End Sub
Private Sub UserForm_Initialize()
With Me.ComboBox1
.AddItem "Sportwagen"
.AddItem "Limuosine"
.AddItem "SUV"
.AddItem "Supersportwagen"
.ListIndex = "0"
End With
End Sub