Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1592to1596
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

Listbox statt Datenliste?

Listbox statt Datenliste?
18.11.2017 17:45:28
Claudia
Hallo zusammen,
ich würde gerne Eure Hilfe in Anspruch nehme
In meiner Excel-Tabelle befülle ich die Spalte F ab Zeile 7 mit einer Liste (Datenüberprüfung). Diese Daten stehen in Spalte Z Zeile 2 bis 80 .
Die Liste von Excel ist ziemlich bescheiden, da unkomfortabel. Man kann nicht scrollen und es werden nur 8 Einträge aus der Liste wird angezeigt. Eine Eingabe eines Buchstabens z.B. zum direkten Anspringen geht auch.
Kann man sowas auch komfortabler machen? Mein Wunsch wäre, wenn ich in Spalte F mit dem Cursor bin, dass ich entweder einen Wert direkt eingeben kann oder per Listbox.
Lässt sich sowas realisieren? Vielen lieben Dank im Voraus!
LG Claudia

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

Betreff
Datum
Anwender
Anzeige
AW: Listbox statt Datenliste?
18.11.2017 20:51:44
onur
Datenüberprüfung ist ja auch nur dazu da, die Auswahl zu beschränken.
Für dich ist eher die ComboBox geeignet.
Mann kann sie sogar so programmieren, dass sie sich erweitert (automatisch nicht vorhandene Eingaben in die Liste aufnimmt).
Hier ein Beispiel:
https://www.herber.de/bbs/user/117759.xlsm
AW: Listbox statt Datenliste?
18.11.2017 20:56:42
onur
Vergessen, zu erwähnen:
Zum Testen erst Befüllen und danach einen Wert eingeben (mit "Enter" abschliessen), der nicht in der Liste ist.
AW: Listbox statt Datenliste?
18.11.2017 22:45:37
fcs
Hallo Claudia,
in der Beispieldatei hab ich dir ein entsprechendes Makro eingebaut.
https://www.herber.de/bbs/user/117760.xlsm
Bitte auch Hinweise im Tabellenblatt beachten.
Gruß
Franz
Anzeige
AW: Listbox statt Datenliste?
19.11.2017 11:25:41
Claudia
Hallo Ihr zwei,
vielen Dank für Eure Hilfe. Das ist super nett.
Die Lösung von Dir, Franz, wäre mein Favorit. Ich hätte aber noch paar Wünsche, in der Hoffnung, dass dies auch geht.
- Ich würde die Eingabe nur über die Liste machen wollen.
- Ist es möglich - wenn ich einen Buchstabe eingebe - dass die Liste dann zu diesen Buchstaben spring und ich dann die richtige Auswahl treffen? In Deiner Liste würde ich mit M zu M01 springen und könnte dort dann den gewünschten Wert auswählen.
- Nach der "finalen" Auswahl soll der Cursor immer in die nächsten Zeile und dort in die Spalte B springen. Vermutlich bräuchte man dann noch ein OK und ein Abbrechen Button?
- Ich habe die Liste um ein langes Wort erweitert was in der Auswahl dann aber nur zum Teil angezeigt wird. Ist es möglich, die Auswahlliste anzupassen, so dass ich den gesamten Begriff sehen kann?
Ich weiß, dass sind noch paar Extra-Wünsche. Ich hoffe, dass jemand (vielleicht Du Franz?) mir noch einmal helfen kann.
Vielen lieben Dank!
LG CLaudia
Anzeige
AW: Listbox statt Datenliste?
19.11.2017 12:23:59
Claudia
Hallo zusammen,
nach dem ich das Makro von Dir, Onur, nun richtig verstanden habe, ist das meine Lösung.
Ich habe mit etwas ausprobieren rausbekommen, wie ich den Ausgabebereich verändern kann.
Ihr habt mir beide sehr geholfen. Vielen vielen Dank!
Ich wünsche Euch ein schönes Restsonntag.
LG Claudia
AW: Listbox statt Datenliste?
20.11.2017 14:00:18
fcs
Hallo Claudia,
- Ich würde die Eingabe nur über die Liste machen wollen.

Daran kann dich ja niemand hindern, die Datengültigkeitsprüfung wäre dann nur ein Absicheung gegen manuelle Falscheingaben.
- Ist es möglich - wenn ich einen Buchstabe eingebe - dass die Liste dann zu diesen Buchstaben spring und ich dann die richtige Auswahl treffen? In Deiner Liste würde ich mit M zu M01 springen und könnte dort dann den gewünschten Wert auswählen.
Diese Funktionalität kann man über die Eigenschaften der Listbox einstellen (MatchEntry = 0 - frmMatchEntryFirstLetter) und ist meines Wissens die Standardeinstellung für Listboxen.
- Nach der "finalen" Auswahl soll der Cursor immer in die nächsten Zeile und dort in die Spalte B springen. Vermutlich bräuchte man dann noch ein OK und ein Abbrechen Button?
Im Makro hab ich es jetzt so eingerichtet, dass mit ENTER oder Pfeiltasten links/rechts die Listbox verlassen und Spalte B in der Folgezeile selektiert wird. Ebenso wenn nach der Auswahl eine beliebige Zelle per Maus selektiert/die Listbox verlassen wird.
- Ich habe die Liste um ein langes Wort erweitert was in der Auswahl dann aber nur zum Teil angezeigt wird. Ist es möglich, die Auswahlliste anzupassen, so dass ich den gesamten Begriff sehen kann?
Hier musst du wie bereits beschrieben den Entwurfsmodus für die Steuerelemente aktivieren, dann kannst du die Breite der Listbox vergrößern.
Gruß
Franz

Private Sub ListBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case 13, 37, 39 'Enter, Pfeil links, Pfeil rechts
Application.EnableEvents = False
With Me.ListBox1
'bei verlassen der Listbox nächste Zeile Spalte B selektieren
Me.Cells(Me.Range(.LinkedCell).Row + 1, 2).Select
.LinkedCell = ""
.Visible = False
End With
Application.EnableEvents = True
Case Else
'do nothing
'            MsgBox KeyCode
End Select
End Sub
Private Sub ListBox1_LostFocus()
Application.EnableEvents = False
With Me.ListBox1
'bei verlassen (z.B. mit Maus) der Listbox nächste Zeile Spalte B selektieren
Me.Cells(Me.Range(.LinkedCell).Row + 1, 2).Select
.LinkedCell = ""
.Visible = False
End With
Application.EnableEvents = True
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim varWert
On Error GoTo Fehler
'Prüfen ob eine auszufüllende Zelle selektiert wurde - hier ggf. die Prüfbedingen _
bzw.den Wert für Row/Column anpassen - aktuell Zelle C1
If Target.Row >= 7 And Target.Cells.Count And Target.Column = 6 Then   'Spalte mit Listbox1
varWert = Target
With Me.ListBox1
'neue Position der Listbox
.Left = Target.Offset(0, 1).Left
.Top = Target.Offset(0, 0).Top
'verknüpfte Zelle auf gewählte Zelle setzen
.LinkedCell = "'" & Me.Name & "'!" & Target.Address
'Listboxwert als obersten Wert in Listbox setzen
If IsEmpty(varWert) Then
.TopIndex = 0
Else
.TopIndex = .ListIndex
Resume01:
End If
.Visible = True
.Activate    'Listbox nach Zellauswahl direkt aktivieren
'Scrollvorgang erforderlich, da sonst gelegtenlich chaotische Anzeige von aktiver Zelle und  _
Listbox
ActiveWindow.ScrollRow = Target.Row - 2
End With
End If
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 440, 380 'Wert in Zelle ist nicht in Auswahlliste der Listbox
MsgBox "Wert in Zelle ist nicht in Auswahlliste der Listbox"
With Me.ListBox1
.ListIndex = -1
.TopIndex = 0
Resume Resume01
End With
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
End Sub

Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige