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

Auswahlmöglichkeit in Datenliste

Auswahlmöglichkeit in Datenliste
09.01.2015 10:18:03
Karlheinz
Hallo Excelgemeinde,
für meine Tabelle suche ich mittels eines Kombinationsfeldes oder ähnliches, die Möglichkeit mehrere Daten aus einer Liste anzuklicken und diese dann in die aktive Zelle zu übertragen.
Als Beispiel habe ich eine Mustertabelle hier hochgeladen:
https://www.herber.de/bbs/user/94875.xls
In der Tabelle 2 sind die Werte aufgelistet, wenn ich nun in der Tabelle 1 auf das Kombinationsfeld klicke, dann wird zwar der Wert in die Zelle übertragen, aber ich würde gerne mehr als einen Wert anklicken und diese angewählten Daten alle in die aktive Zelle übertragen lassen.
Also, wenn ich zwei oder mehr Nummern anklicke, dann sollten alle übertragen werden?
Geht sowas überhaupt?

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Auswahlmöglichkeit in Datenliste
09.01.2015 15:18:48
fcs
Hallo Karlheinz,
für deine Anwendung muss man eine Listbox mit Mehrfachauswahl verwenden.
Zusätzlich sollte man die Listbox dynamisch konfiguren, so dass sie nur sichtbar wird wenn eine Zelle selektiert wird, die per Listbox ausgefüllt werden darf und neben der auszufüllenden Zelle positioniert wird.
Dafür müssen entsprechende Ereignismakros hinter dem Tabellenblatt angelegt werden.
Gruß
Franz
Hier deine Datei entsprechend angepasst.
https://www.herber.de/bbs/user/94891.xls

AW: Auswahlmöglichkeit in Datenliste
09.01.2015 16:43:03
Karlheinz
Hallo Franz,
danke für die Antwort.
So ähnlich hatte ich mir das vorgestellt.
Wenn ich den Button "Entwurfmodus" deaktivieren möchte, dann bekomme ich die Fehlermeldung:
Microsoft Visual Basic
Wechsel aus dem Entwurfmodus nicht möglich, da das Steuerelement 'ComboBox21' nicht erstellt werden kann.
Es ist auch nicht so die Lösung, wie ich mir es vorstelle. Denn das Ganze wollte ich ja in einem "Vordruck" einbauen und so funktionieren wie eben das Dropdownfeld "Datenliste".
Mit dieser Variante bleibt ja immer das Feld sichtbar und "stört" ein bißchen.
mfg Karlheinz

Anzeige
AW: Auswahlmöglichkeit in Datenliste
10.01.2015 10:47:08
fcs
Hallo Karlheinz,
irgedwie scheint es manchmal (immer?) ein Problem mit der Nummerierung/den Namen der Active-X-Steuerelmente zu geben, wenn man bei Dateien zwischen den Versionen Excel 2003 und Excel 2010 wechselt oder diese in Excel alt/neu öffnet.
Daher kommt dann wohl auch die Fehlermeldung beim Öffnen der Datei.
Seit einiger Zeit beginnt beim Anlegen von Active-X-Elementen die fortlaufenden Nr. nicht mehr bei 1 sondern bei 21. Da hat mein bei Microsoft den Anwendern wohl von hinten einen Schuß durch's Knie verpasst - nichts als Ärger.
Ich hab jetzt mal deine Datei als xlsm-Datei und als xls-Datei angelegt.
Die Listbox sollte sich wie folgt verhalten:
Die Listbox wird nur angezeigt, wenn man eine Zelle in Spalte B selektiert. Sie wird rechts neben der selektierten Zelle angezeigt und die obere Position der Listbox ist identisch mit der oberen Position der aktiven Zelle. Wählt man eine Zelle in einer anderen Spalte oder oberhalb von Zeile 5,dann wird die Listbox ausgeblendet. Die zugehörigen Makros sind unter Tabelle1 angelegt.
Vor dem Speichern und vor dem Drucken wird die Listbox ebenfalls ausgeblendet. Die entsprechenden Makros sind unter "DieseArbeizsmappe" angelegt.
Gruß
Franz
https://www.herber.de/bbs/user/94902.xlsm
https://www.herber.de/bbs/user/94903.xls

Anzeige
AW: Auswahlmöglichkeit in Datenliste
10.01.2015 13:40:07
Karlheinz
Hallo Franz,
danke nochmals.
So war mein Wunschgedanke. Leider komme ich mit den ganzen VBA nicht so zurecht, um es so zu plazieren, wo es eigentlich sein sollte. Hier im Beispiel ist alles auf die Spalte B und Zeile 5 abgestimmt.
Habe mal versucht eine zweite ListBox einzufügen und nur um eine Spalte weiter, damit ich den VBA-Code verstehe, aber es klappt nicht. Auch eine Kopie der ListBox21 und des VBA-Codes mit Änderung des Namen "ListBox21 auf 22", die Spaltenänderung von "Case 2 auf 3". Auch die Auskommentierung von den Fehlern bringt mich nicht weiter.
So habe ich zwar eine Lösung, aber kann sie nicht umsetzen ;-(
Für VBA bin ich ein Neuling und mit einem "einfachen Paste und Copy + Änderung im VBA-Text" klappt das nicht.
nochmals Danke für die Hilfe,
wünsche ein schönes Wochenende
Karlheinz

Anzeige
AW: Auswahlmöglichkeit in Datenliste
11.01.2015 16:45:20
Karlheinz
Hallo Franz,
sende zu meiner Anfrage nochmals die Datei mit meiner Änderung.
Vielleicht siehst du den Fehler?
Hier die Datei:
https://www.herber.de/bbs/user/94931.xlsm
Karlheinz

AW: Auswahlmöglichkeit in Datenliste
12.01.2015 10:37:40
fcs
Hallo Karlheinz,
irgendwo steckt in der Datei bei Verwendung mit einer der aktuellsten Excelversionen der Wurm drin.
Nach dem Hochladen ist der VBA-Code tot und die Ereignismakros starten nicht bzw. die Listboxen werden im Code nicht erkannt.
Baut man die Datei neu auf, dann funktionierts.
Jedes Tabellenblatt hat nur eine Worksheet_SelectionChange-Ereignisprozedur. In diese muss man alles einbauen, was man abhängig von selektierten Zellen an Ereignissen steuern möchte. In deinem Fall muss eine weiter Case-Zeile für Spalte 3 eingebaut werden. Da der Code für das Positionieren und markieren der Einträge für die beiden Listboxen identisch ist kann man eine separate Sub erstellen mit Listbox und Zelle als Parameter.
Gruß
Franz
'Code für Tabellenblatt mit den 2 Listboxen
Option Explicit
Private bolEinlesen As Boolean
Private Sub ListBox1_Change()
If bolEinlesen = True Then Exit Sub
Dim strText As String
Dim iItem As Integer
'Prüfen, ob Aktive Zelle innerhalb des Ausfüllbereichs der Listbox liegt
Select Case ActiveCell.Column
Case 2 'Spalte B
Select Case ActiveCell.Row
Case Is >= 5
With Me.ListBox1
For iItem = 0 To .ListCount - 1
If .Selected(iItem) = True Then
If strText = "" Then
strText = .List(iItem, 0)
Else
strText = strText & Chr(10) & .List(iItem, 0)
End If
End If
Next
End With
ActiveCell = "'" & strText
Case Else
MsgBox "nur ab Zeile 5 könne per Listbox Werte eingetragen werden"
End Select
Case Else
MsgBox "nur in Spalte 2 ab Zeile 5 könne per Listbox Werte eingetragen werden"
End Select
End Sub
Private Sub ListBox1_LostFocus()
Me.ListBox1.Visible = False
End Sub
Private Sub ListBox2_Change()
If bolEinlesen = True Then Exit Sub
Dim strText As String
Dim iItem As Integer
'Prüfen, ob Aktive Zelle innerhalb des Ausfüllbereichs der Listbox liegt
Select Case ActiveCell.Column
Case 3 'Spalte C
Select Case ActiveCell.Row
Case Is >= 5
With Me.ListBox2
For iItem = 0 To .ListCount - 1
If .Selected(iItem) = True Then
If strText = "" Then
strText = .List(iItem, 0)
Else
strText = strText & Chr(10) & .List(iItem, 0)
End If
End If
Next
End With
ActiveCell = "'" & strText
Case Else
MsgBox "nur ab Zeile 5 könne per Listbox Werte eingetragen werden"
End Select
Case Else
MsgBox "nur in Spalte 3 ab Zeile 5 könne per Listbox Werte eingetragen werden"
End Select
End Sub
Private Sub ListBox2_LostFocus()
Me.ListBox2.Visible = False
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim strText As String
Dim arrText, iItem As Integer, iWerte As Integer
'Zellbereich prüfen, in dem Listbox wirksam sein soll
If Target.Cells.Count = 1 Then
Select Case Target.Column
Case 2 'Spalte B - Listbox1 positionieren, anzeigen und Werte aus aus Zelle einlesen
Select Case Target.Row
Case Is >= 5
Me.ListBox2.Visible = False
Call prcListboxInit(objListbox:=Me.ListBox1, Zelle:=Target)
Case Else
Me.ListBox1.Visible = False
End Select
Case 3 'Spalte C - Listbox2 positionieren, anzeigen und Werte aus aus Zelle einlesen
Select Case Target.Row
Case Is >= 5
Me.ListBox1.Visible = False
Call prcListboxInit(objListbox:=Me.ListBox2, Zelle:=Target)
Case Else
Me.ListBox2.Visible = False
End Select
Case Else
Me.ListBox1.Visible = False
Me.ListBox2.Visible = False
End Select
End If
End Sub
Private Sub prcListboxInit(objListbox As Object, Zelle As Range)
'Listbox positionieren, anzeigen und Werte aus aus Zelle einlesen
Dim arrText, iItem As Integer, iWerte As Integer
Dim strText As String
strText = Zelle.Text
bolEinlesen = True
Application.EnableEvents = False
With objListbox
'Listbox markieren
.Left = Zelle.Offset(0, 1).Left
.Top = Zelle.Top
.Visible = True
'In Zelle vorhandene Werte in Listbox markieren
For iItem = 0 To .ListCount - 1
If .Selected(iItem) = True Then .Selected(iItem) = False
Next
If strText  "" Then
arrText = Split(strText, Chr(10))
For iWerte = LBound(arrText) To UBound(arrText)
For iItem = 0 To .ListCount - 1
If CStr(.List(iItem, 0)) = arrText(iWerte) Then
.Selected(iItem) = True
Exit For
End If
Next
Next
End If
End With
Application.EnableEvents = True
bolEinlesen = False
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige