Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
772to776
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
772to776
772to776
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Werte aus Listbox in aktive Zelle eintragen

Werte aus Listbox in aktive Zelle eintragen
16.06.2006 11:57:06
Christoph
Hallo VBA-Gemeinde,
ich habe folgendes Problem:
ich möchte in eine aktive Zelle Werte eintragen, die ich aus einer Listbox auswähle.
die Listbox wird automatisch aus einer Liste in einem anderen Sheet generiert. Das habe ich soweit hinbekommen. Nachdem ich nun mehrere Werte aus der Liste ausgewählt habe wird jedoch nur der erste selektierte Wert in die aktive Zelle eingetragen.
Vielen Dank für Eure Hilfe im Voraus.
Christoph

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Werte aus Listbox in aktive Zelle eintragen
16.06.2006 17:14:24
Lutz
Hallo Cristoph,
das folgende Makro sollte dir helfen. Die markierten Werte habe ich durch ":::" trennen lassen, das musst du noch anpassen. Auch habe ich nicht in die gerade aktive Zelle, sondern in Zelle A1 von Tabelle1 schreiben lassen, auch das müsstest du noch ändern. Da es dir aber nur um die Mehrfachauswahl ging, solltest du die Änderungen ja hinbekommen. Ich habe zwar nur O2k, sollte aber auch bei O2k3 noch so funktionieren.
Hier nun das Makro:

Sub test()
Dim i As Integer
Dim Auswahl As String
For i = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(i) = True Then
Auswahl = Auswahl & ListBox1.List(i) & ":::"
End If
Next i
Worksheets("Tabelle1").Range("A1").Value = Auswahl
End Sub

HTH
Lutz
Anzeige
AW: Werte aus Listbox in aktive Zelle eintragen
17.06.2006 12:46:49
fcs
Hallo Christoph,
Listboxen (Erzeugt mit der Symbolleiste "Steuerelement-Toolbox") übertragen den ausgewählten Wert in die unter Eigenschaft "LinkedCell" eingetragene Zelle. Listboxen mit Mehrfachauswahl übertragen keinen Wert in die "LinkedCell".
Hier muss man per Makro nachhelfen. Leider funktioniert der Eintrag in die aktive Zelle der Tabelle auch nicht einfach, da in Excel immmer nur ein Element aktiv sein kann und solange die Listbox aktiv ist, gibt es keine aktive Zelle.
Deshalb sind ein paar Umwege notwendig, um aktive Zelle und Listbox-Auswahl zu verbinden.
So wie du deine Frage gestellt hast, möchtest du in verschiedenen Zellen die in der Liste ausgewählten Werte eintragen.
Bei meiner Lösung wird die Adresse der selektierten/aktiven Zelle als LinkedCell für die Listbox festgelegt. Dabei müssen die selektierten Zellen in einem bestimmten Zellbereich sein. Sind in der aktiven Zelle schon Einträge vorhanden, dann werden diese in der Listbox markiert. Gleichzeitig wird die Listbox immer rechts neben der gewählten Zelle positioniert. Wird eine Zelle außerhalb des vorgegebene Bereichs gewählt, dann wird die Listbox ausgeblendet.
Den nachfolgenden Code im VBA.Editor unter der Tabelle einfügen in der sich die Listbox befindet. Den Zellbereich anpassen und ggf. die Bezeichnung der Listbox.

'Auswahl in einer Listbox mit Mehrfachauswahl in eine Zelle übertragen
Dim AendernLB1  As Boolean 'Change-Ereignis der Listbox1 steuern
Private Sub ListBox1_Change()
With ListBox1
If .LinkedCell = "" Or AendernLB1 = False Then Exit Sub
Dim I As Integer
Dim Auswahl As String, Sep As String
Sep = " : " 'Trennzeichen zwischen den Werten
For I = 0 To .ListCount - 1
If .Selected(I) = True Then
If Auswahl = "" Then
Auswahl = .List(I)
Else
Auswahl = Auswahl & Sep & .List(I)
End If
End If
Next I
ActiveSheet.Range(.LinkedCell).Value = Auswahl
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim Wert, I As Integer, J As Integer, Sep As String, Werte() As String
' In der nächsten Zeile den Zellbereich festlegen in dem die Listbox wirksam sein soll
If Not Intersect(Target, ActiveSheet.Range("B2:B21")) Is Nothing And Target.Cells.Count = 1 Then
Wert = Target.Value
Target.ClearContents ' erforderlich, da bei gefüllten Zellen sonst Fehlermeldung bei Multiselectbox
With ListBox1
.LinkedCell = Target.Address
' Listbox rechts neben der aktiven Zelle positionieren
.Top = Target.Top
.Left = Target.Offset(0, 1).Left
' Auswahlliste an Zellwert anpassen
Target.Value = Wert
AendernLB1 = False 'Schalter setzen, damit Change-Ereignis der Listbox nicht ausgeführt wird
For I = 0 To .ListCount - 1
.Selected(I) = False
Next
.Visible = True
If Not IsEmpty(Target) Then
'Werte ermitteln
ReDim Werte(0 To .ListCount - 1)
Sep = " : " 'Trennzeichen zwischen den Werten
I = 0
Do Until InStr(1, Wert, Sep) = 0
Werte(I) = Left(Wert, InStr(1, Wert, Sep) - 1)
Wert = Mid(Wert, InStr(1, Wert, Sep) + Len(Sep))
I = I + 1
Loop
Werte(I) = Wert
'Werte in Liste markieren
For I = 0 To .ListCount - 1
If Werte(I) = "" Then Exit For
For J = 0 To .ListCount - 1
If Werte(I) = .List(J) Then
.Selected(J) = True
End If
Next J
Next I
End If
AendernLB1 = True 'Change-Ereignis der Listbox wieder aktivieren
' Listbox einblenden
End With
Else
With ListBox1
.LinkedCell = "" 'keine Zelle der Listbox zuordnen
.Visible = False ' Listbox ausblenden
End With
End If
End Sub

Beispieldatei:

Die Datei https://www.herber.de/bbs/user/34439.xls wurde aus Datenschutzgründen gelöscht

mfg
Franz
Anzeige

308 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige