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

Neuer Datensatz in Listbox

Neuer Datensatz in Listbox
22.09.2021 08:53:01
Thomas
Hallo liebe Forennutzer,
ich habe auf einer userform eine Listbox und möchte immer unter dem aktuell markierten Datensatz, einen neuen einfügen.
Folgenden Code habe ich zusammengebsatelt:

Private Sub Button_new_Click() 'Beim anklicken des Button new in userform wird folgender Code ausgeführt
On Error GoTo Fehlermeldung 'Wenn eine Fehlermeldung auftritt, nach unten springen und Code übergehen
Dim b As Long, d As Long, e As Long, c As Long
d = Me.ListBox1.ListIndex
b = (Me.ListBox1.List(d, 0) * 1) + 2 'Zeilennummer
c = (Me.ListBox1.List(d, 0) * 1) - 2 'Zeilennummer -2
e = Application.WorksheetFunction.Max(Tabelle2.Columns(1)) + 1 'Maximalwert der Spalte 1 in Tabelle2 +1 als Variable definieren
Tabelle2.Rows(b & ":" & b).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove 'Einfügen einer Zeile unter der Makierung
Tabelle2.Cells(b, 1) = e 'Einfügen von Beispielwerten für den neuen Datensatz
Tabelle2.Cells(b, 2) = "blau" 'Einfügen von Beispielwerten für den neuen Datensatz
Tabelle2.Cells(b, 23) = "1" 'Einfügen von Beispielwerten für den neuen Datensatz
Tabelle2.Cells(b, 24) = "d" 'Einfügen von Beispielwerten für den neuen Datensatz
Tabelle2.Cells(b, 25) = "Quadrat" 'Einfügen von Beispielwerten für den neuen Datensatz
Tabelle2.Cells(b, 26) = "01.01.2026" 'Einfügen von Beispielwerten für den neuen Datensatz
Tabelle2.Cells(b, 27) = e 'Den Maximalwert+1 in der Spalte übernehmen
ListBox1.Clear 'Alle Listboxeinträge entfernen
UserForm_Initialize 'Aufruf des Initialize Ereignis
Me.ListBox1.Selected(c) = True 'Auswahl des Listboxeintrags der angezeigt werden soll
Exit Sub
Fehlermeldung:
MsgBox ("Please choose one") 'Wenn eine Fehlermeldung auftritt, öffnet sich eine Messagebox mit dem in "" stehenden Inhalt
End Sub
Anbei hierzu auch meine Beispieldatei: https://www.herber.de/bbs/user/148201.xlsm
Mein Problem: Füge ich bspw. bei Datensatz 3 ein, funktioniert alles wie geplant. Füge ich allerdings bei 50,57,60 ein, wird die eingefügte Zeile nicht immer über der gewünschten eingefügt.
Hängt dies mit meinen Variablen zusammen? Müssen die irgendwie zurückgesetzt werden? Bin für jeden Hinweis sehr dankbar!
Viele Grüße
Thomas

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Neuer Datensatz in Listbox
22.09.2021 23:00:32
Piet
Hallo
mir ist bei der UserFirm aufgefallen das die DropDowns fur "a", 1, bkau, Dreieck NICHT mit den Spalten der ListBox übereinstimmen.
Von der Logik und Handhabung ist es besser sie 1:1 übereinander zu stellen. Den Reset Button kann man nach unten verschieben!
Bei der Eingabe "new" wird die nächste Index Nr. und Daten NICHT unten angehangen, sondern mitten zwischen die Zahlen gesetzt.
Ich weiss nicht ob das so gewollt ist? Falls Nein mit dem Befehl die letzte Zelle in Tabelle 3 zum unten anfügen suchen.
: Worksheete("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row + 1
mfg Piet
Anzeige
AW: Neuer Datensatz in Listbox
22.09.2021 23:30:41
Thomas
Hallo Piet,
vielen Dank für deinen Input zur usability, ich werde die Filter den entsprechenden Spalten zuordnen.
Mit dem anfügen hast du genau mein Problem beschrieben. Ich möchte immer den neuen Datensatz unter dem in der Listbox markierten darstellen. Dies funktioniert, wenn ich bspw. als erstes hinter dem in Spalte eins mit 3 bezeichneten Datensatz einfüge. Wenn ich bei 94 einen ersten Datensatz einfügen würde ist dieser schon an der falschen Stelle, nämlich nicht unter dem zuvor gewählten.
Ziel war es: Datensatz in Listbox markieren - Button New anklicken - Datensatz wird unter der Markierung eingefügt - neuer Datensatz selektiert
Ich komme momentan nicht hinter die Logik, warum es bei in Spalte 1 mit 3 bezeichneten Datensatz funktioniert, allerdings mit dem mit 94 und anderen nicht.
Wenn du hierzu noch eine Idee hast, wäre das wirklich klasse.
Vielen Dank für deinen Input und viele Grüße
Kai
Anzeige
AW: Neuer Datensatz in Listbox
22.09.2021 23:30:57
Luschi
Hallo Thomas,
Deine Logik beim Einfügen von neuen Datenzeilen ist falsch:
- in der Listbox ist Nr. 50 markiert
- dies entspricht im Moment der aktuellen Zeile 51 im Tabellenblatt
- die neue Datenzeile wird eingefügt in Zeile 52 (b = 50 + 2)
- also nach Zeile 51 und ist so noch korrekt
- Cursor wird auf 70 gestellt
- vor dem Einfügen des neuen Datensatzes stand die 70 in Zeilennummer 71
  jetzt danach aber in Zeile 72
- und trotzdem rechnest Du b = 70 + 2, also 72
- somit wird eine neue Zeile 72 eingefügt, da stand aber vorher der DS mit der Nr. 70
- und der Datensatz mit der Nr. 70 steht jetzt in Zeile 73
- und der neue DS in Zeile 72!
Ausweg:
- füge in die Listbox eine neue unsichtbare 'Spalte (Sp.Breite = 0) ein
- ListBox1.AddItem .Cells(lZeile, 1).Row
- und benutze diesen Spaltenwert zur Ermittlung der neuen Zeilen-Nr.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Neuer Datensatz in Listbox
23.09.2021 09:51:00
Thomas
Hallo Luschi,
vielen Dank für deine Erläuterungen, die zum einen das Problem behoben haben und zum anderen dafür gesorgt haben, dass ich es auch verstanden habe.
Ich konnte meine Datei nun komplett umsetzen und kann Sie zukünftig gewünscht nutzen:-). Vielen Dank für Deine Zeit und Hilfe!
Anbei die Datei mit dem funktionierenden Code: https://www.herber.de/bbs/user/148218.xlsm
Viele Grüße
Thomas
AW: Neuer Datensatz in Listbox
25.09.2021 10:27:46
Luschi
Hallo Thomas,
etwas an Deiner Userform stört mich noch - die Comboboxen sind nicht dynamisch. Es kann vorkommen, daß diese CBoxen noch Werte anzeigen, obwohl durch andere CBoxen viele Werte schon rausgefiltert wurden und so in der entsprechenden Spalte der Wert 'violet' nicht mehr vorkommt, die CBox diesen Filterwert aber noch anbietet. Hier muß man das Einlesen der CBoxen in das Ereignis 'DropButtonClick' verschieben.
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Neuer Datensatz in Listbox
28.09.2021 08:33:17
Thomas
Hallo Luschi,
vielen Dank für den Hinweis, das werde ich mal ausprobieren, da es das Filtern nochmal deutlich vereinfacht.
Hab vielen Dank und viele Grüße
Thomas
AW: Neuer Datensatz in Listbox @Luschi
28.09.2021 10:09:22
Thomas
Hallo Luschi,
ich habe schonmal voneinander abhängige Dropdowns erstellt, allerdings wurden diese anders befüllt. Aktuell befülle ich die Dropdowns mit folgendem Code aus der Hilfe von Nepumuk https://www.herber.de/forum/cgi-bin/callthread.pl?index=1842479:

Private Sub FilterList()
Dim oDic As Object, meAr
Dim A As Long, S As Long
mavntValues = ListBox1.List 'Die Variable mavntValues entspricht den zuvor festgelegten Einträgen in der Listbox
Set oDic = CreateObject(Class:="Scripting.Dictionary") 'oDic wird als Dictionary definiert
For S = 1 To 4 'Schleife 1-4
With Worksheets("Tabelle3") ' Das folgende bezieht sich auf Tabelle 3
meAr = .Range(.Cells(2, S), .Cells(.Rows.Count, S).End(xlUp)).Value 'Das Dictionary wird befüllt mit den Werten aus der Spalte 1-4 und den Zeilen 2 bis letzte gefüllte
End With
For A = 1 To UBound(meAr)
oDic(meAr(A, 1)) = vbNullString
Next
Controls("ComboBox" & CStr(S)).List = oDic.Keys 'Die jeweilige Liste der ComboBox 1-4 entspricht den zuvor gemachten Einträgen
oDic.RemoveAll
Next
Set oDic = Nothing
End Sub
Für diesen Fall, hab ich leider keine Ahnung, wie ich die Abhängigkeit für das Befüllen vornehmen soll.
Ich hänge die Beispielmappe nochmals an, wenn du einen Tipp hast, in welche Richtung ich suchen muss, so würde ich es aus Interesse gerne probieren, aktuell funktioniert die Mappe zum Glück schon, sodass ich Sie nutzen kann :-)
Viele Grüße und vielen Dank
Kai
Anzeige
AW: Neuer Datensatz in Listbox @Luschi
28.09.2021 17:09:49
Luschi
Hallo Thomas,
Zitat:

ich hänge die Beispielmappe nochmals an, ...
Du hast vergessen, die Arbeitsmappe anzuhängen.
Gruß von Luschi
aus klein-Paris
AW: Neuer Datensatz in Listbox @Luschi
28.09.2021 17:19:55
Thomas
Hallo Luschi,
stimmt du hast Recht, wie blöd von mir:
https://www.herber.de/bbs/user/148323.xlsm
Anbei nun auch die Datei :-)
Viele grüße
Thomas

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige