Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Auswahl aus Combobox einem Textfeld hinzufügen





Frage

Hallo zusammen, folgendes möchte ich gerne realisieren: Ich habe ein UserForm u.a. mit einer Combobox. Diese ComboBox hat ein paar auswahlmöglichkeiten (alles text). Jetz möchte ich eine Auswahl in der Combobox treffen, welche direkt in einem Anzeigefeld (kann ich hier ein Listenfeld verwenden ?) neben der Combobox erscheint. evtl. möchte ich 2-3 einträge nach einander in der Combobox auswählen, die dann alle im Listenfeld dargestellt werden. idealerweise verschindet die auswahl nach einmaliger aus der combobox um doppelte auswahl dann zu vermeiden. zum schluss möchte ich natürlich noch im Listenfeld einträge anklicken können um sie dann zu löschen wenn ich mich vorher im listenfeld verklickt habe. ist das mit excel irgendwie machbar? das dargestellte listenfeld ist am besten die dynamische darstellung einer zelle von einem anderen Blatt meiner excel tabelle. welche elemente benötige ich um das zu realisieren ... bin für jede hilfe dankbar. grüße BoaVista

Antwort 1 von BoaVista

Moin,

vielleicht muss man ja gar keine Listenbox (ist wahrscheinlich auch die falsche variante) nehmen um die bereits getroffenen auswahlen anzuzeigen ... dennoch bleibt zu klären wie kann aus die einer combobox getätigten auswahlen einmal aus der combobox löschen und gleichzeitig im userform neben der combox anzeigen (und wenn ich sie dort lösche sollten sie in der combobox wieder zur verfügung stehen)

???

/BoaVista

Antwort 2 von zigge

Hallo

Versuch´s ´mal so:;-)

Rem Auf der UserForm werden 2 Listboxen, 2Labels
Rem und ein CommandButton plaziert
Rem Die Eigenschaften der Listenfelder ListStyle
Rem und MultiSelect jeweils auf 1 setzen
Rem Label1.Caption = ">>",Label2.Caption ="<<"
Rem zwischen den Listboxen plazieren

Option Explicit
Option Base 0

Private Sub UserForm_Activate()
Rem hier wird die Listbox1 mit den Daten der Spalte C gefüllt
Dim i%
For i = 2 To Range("c65536").End(xlUp).Row
ListBox1.AddItem Range("C" & CStr(i)).Value
Next
End Sub

Private Sub Label1_Click()
Rem ">>" In Listbox1 markierte Datensätze in Listbox2 übertragen
Dim s%, z() As Integer
ReDim z(0)
For s = 0 To ListBox1.ListCount - 1
Debug.Print ListBox1.Selected(s)
If ListBox1.Selected(s) = True Then
ListBox2.AddItem ListBox1.List(s)
z(UBound(z)) = s
ReDim Preserve z(UBound(z) + 1)
End If
Next
Rem Übertragene Datensätze aus Listbox1 entfernen
For s = UBound(z) - 1 To 0 Step -1
ListBox1.RemoveItem z(s)
Next
End Sub

Private Sub Label2_Click()
Rem "<<" In Listbox2 markierte Datensätze zurück nach Listbox1 übertragen
Dim s%, z() As Integer
ReDim z(0)
For s = 0 To ListBox2.ListCount - 1
Debug.Print ListBox2.Selected(s)
If ListBox2.Selected(s) = True Then
ListBox1.AddItem ListBox2.List(s)
z(UBound(z)) = s
ReDim Preserve z(UBound(z) + 1)
End If
Next
Rem Übertragene Datensätze aus Listbox2 entfernen
For s = UBound(z) - 1 To 0 Step -1
ListBox2.RemoveItem z(s)
Next
End Sub

Private Sub CommandButton1_Click()
Rem in Listbox2 stehende Datensätze in Spalte D ab Zeile2 schreiben
Dim z%
Range("D2:D65535").ClearContents
For z = 0 To ListBox2.ListCount - 1
Range("D" & CStr(2 + z)).Value = ListBox2.List(z)
Next
End Sub


Gruß zigge

Antwort 3 von BoaVista

Moin,

wow vielen dank! werde es im laufe des tages mal testen ...

/BoaVista

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: