Hallo Balta,
ich gebe ungern meine Adresse heraus, weil ich aus einem Forum regelmäßig mit größeren Fragen bombadiert werde. Habe bitte Verständnis dafür. Außerdem bietet das Forum die Möglichkeit, dass sich auch andere in das Problem einklinken können, wenn ein Ansatz suboptimal sein sollte.
Ich verstehe dein Problem so, dass die ursprüngliche Reihenfolge der Einträge nach dem Transfer zwischen den ListBoxen erhalten bleiben soll, also immer Auto vor Motorrad vor Flugzeug, egal in welcher Reihenfolge die Werte ausgewählt wurden. Ich verstehe nicht, woher Fehlermeldungen auftreten sollen, weil ich dieses Makro auch einmal ausprobiert habe. Ich habe natürlich nur die angegebenen Subs verändert. Für die anderen ist diese Arbeit noch sinngemäß zu leisten.
Welche Fehlermeldungen treten in welcher Zeile auf?
Gruß
Holger
Balta schrieb am 26.09.2008 01:16:14:
Hallo Holger,
danke für dein Ansatz, nur leider funktioniert es nicht es ergeben sich lauter fehlmeldungen.
ich würde dir gerne mein Excelsheet zu senden, um besser mein problem zu erläutern.
falls du mir helfen möchtest schreib mir eine mail unter baltabalta@web.de
gruß
balta
Holger schrieb am 25.09.2008 11:38:10:
Hallo Balta,
ich empfehle, die Werte in der Listbox in ein Array zu schreiben, so dass du die Reihenfolge wieder herstellen kannst. Für die anderen Prozeduren musst du den Code entsprechend anpassen.
Private Liste()
Sub UserForm_Initialize()
ReDim Liste(2)
Liste(0) = "Auto"
Liste(1) = "Motorrad"
Liste(2) = "Flugzeug"
lstLinks.List = Liste
'Me.lstLinks.AddItem "Auto"
'lstLinks.AddItem "Motorrad"
'lstLinks.AddItem "Flugzeug"
End Sub
Sub cmdNachrechts_Click()
If lstLinks.ListIndex 0 Then
For i = 0 To UBound(Liste)
If Liste(i) = lstLinks.Text Then a = i: Exit For
Next i
If a = 0 Then
lstRechts.AddItem lstLinks.Value, 0
Else
For j = lstRechts.ListCount - 1 To 0 Step -1
For i = 0 To UBound(Liste)
If Liste(i) = lstRechts.List(j) Then b = i: Exit For
Next i
If b < a Then Exit For
Next j
lstRechts.AddItem lstLinks.Value, j + 1
End If
Else
lstRechts.AddItem lstLinks.Value, 0
End If
lstLinks.RemoveItem lstLinks.ListIndex
End Sub
Gruß
Holger
Balta schrieb am 22.09.2008 17:40:47:
Hallo VBA-Profis,
Habe ein großes Problem womit ich mich schon länger beschäftige, undzwar habe ich 2 Listboxen. sobald ich das UserForm starte, wird in das linke Listbox1 die Einträge Auto, Motorrad, Flugzeug eingetragen.
Dann kann ich diese Einträge einzel nach ListBox2 rüber schicken, miitels Button.
Nun hier ist der Knackpunkt: wenn ich in der reihenfolge bleibe gibts es kein Problem sobald ich aber Flugzeug als erstes rüber schicke zur ListBox2 danach Auto und dann Motorrad, sind die Meldungen komplett Falsch zu geordnet. Das Problem ist das in der ListBox1 wenn Sie eingetragen werden die Adressen Auto(0), Motorrad(1) und Flugzeug(2) haben. Schicke ich Sie nach ListBox2 dann verlieren Sie den Bezug und Es wird die Adresse ausgegeben Also Flugzeug(0), Auto(1), Motorrad(2).
Ich bräuchte dringend eine Lösung wie ich den Namen anwählen und nicht die Adresse.
Sub cmdAlleRechts_Click()
lstRechts.List = lstLinks.List
lstLinks.Clear
End Sub
Sub cmdAlleLinks_Click()
lstLinks.List = lstRechts.List
lstRechts.Clear
End Sub
Sub cmdLoeschenRechts_Click()
lstRechts.Clear
End Sub
Sub cmdLoeschenLinks_Click()
lstLinks.Clear
End Sub
Sub cmdNachrechts_Click()
If lstLinks.ListIndex < 0 Then
MsgBox "Bitte wählen Sie einen Eintrag!"
Exit Sub
End If
lstRechts.AddItem lstLinks.Value
lstLinks.RemoveItem lstLinks.ListIndex
End Sub
Sub cmdNachLinks_Click()
If lstRechts.ListIndex < 0 Then
MsgBox "Bitte wählen Sie einen Eintrag!"
Exit Sub
End If
lstLinks.AddItem lstRechts.Value
lstRechts.RemoveItem lstRechts.ListIndex
End Sub
Private Sub Senden_Click()
Select Case lstRechts.ListIndex
Case 0
lstRechts.ListIndex = Test1
MsgBox "auto"
'Call Auto
Case 1
lstRechts.ListIndex = Test2
MsgBox "Motorrad"
'Call Motorrad
Case 2
lstRechts.ListIndex = Test3
MsgBox "Flugzeug"
'Call Flugzeug
End Select
End Sub
Sub UserForm_Initialize()
Me.lstLinks.AddItem "Auto"
lstLinks.AddItem "Motorrad"
lstLinks.AddItem "Flugzeug"
End Sub
Sub cmdBack_Click(): Unload Me: End Sub
|