Clever-Excel-Forum

Normale Version: Listbox fülle
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Revidiere: Hat funktioniert.

Jetzt generiert es einen Überlauf.

Ich dreh noch durch.
Moin,

Dann kommst Du hier
Zitat:z = ThisWorkbook.Sheets("ListBoxDaten").Range("Tabelle6").End(xlDown).Row + 1
wahrscheinlich zu weit runter, falls Deine Tabelle zu viele Zeilen hat ...

Nimm mal statt Integer Long und schaue Dir den Wert von z an

Oder verträgt die Listbox die Daten nicht?

Ich hatte ja bei letzten Fehler schon gefragt, wo er auftritt und welche Meldung genau kommt ...
Guten Morgen

Habe nun As Long verwendet. Der Überlauf kommt nun nicht mehr.
Meine Tabelle ist 3 Spalten breit und am Anfang leer.
Sie wird sozusagen als Zwischenspeicher verwendet.

Momentan bekomme ich folgende Fehler:
[attachment=35025]
[attachment=35024]

Wenn ich .End(xlDown) zu .End(xlUp) ändere funktioniert es, jedoch überschreibt es mir dann immer die eingetragene Zeile.
Sprich Es erstellt einen Zeile in der Tabelle, welche immer wieder überschrieben wird, anstatt dass es eine neue Zeile generiert.

Fehlt mir hier noch ein Teil, welcher der Tabelle sagt, dass Sie den Eintrag immer in die nächste freie Zeile eintragen soll?
Habe gedacht, dass Ich dies mit .Row + 1 mache?

Danke dir auf jeden Fall

Gruss
Demech
Hallöchen,

Zitat:Habe gedacht, dass Ich dies mit .Row + 1 mache?

ja, so kann man das machen. Allerdings geht man dazu ganz nach unten z.B. auf dem Blatt, also z.B. zu Cells(Rows.Count, 1)

Wie groß ist denn z bei Dir? Ich vermute, dass Du unten das Blattende überspringst mit Deinem End(xlDown).Row + 1 ...
Ou z wird mir mit =1048577 angegeben

Habe ich mit z = ThistWorkSheet .....
nicht z auf die Tabelle definiert?

und mit if z <1 then z = 1 sage ich doch: wenn keine Zeile vorhanden ist mach eine Zeile.

Hmm wenn ich das so schreibe, kommt mir gleich der Gedanke, dass ich dort wohl noch bestimmen muss, was er machen soll wenn z = 1 ist?

if z <1 then z = 1
If z =1 then z +1

?
Hallöchen,

...End(xlUp) oder ...End(xlDown) simuliert die Bewegung mit den Cursortasten. Du kannst das einfach ausprobieren, indem Du z.B. wie im Code den Cursor in A1 stellst - darunter lässt Du alles leer - und schaust, wo Du z.B. mit STRG+Down und Strg+Up hin gelangst. Dann trägst Du mal was in A2 und A3 ein und wiederholst den Test ...
Hallo Shauan

Habe noch gerade was über Crossposting gelernt. Dies war mir nicht bewusst.
War mit dem Problem auch noch im Forum: https://www.herber.de/forum/

Wollte einfach gross gefächerte Ideen sammeln um möglichst viel zu lernen.
War mir jedoch nicht bewusst dass dies nicht gern gesehen ist. Wurde im anderen Forum darauf hingewiesen.

Habe bei herber noch folgenden Ansatz erhalten:

Private Sub CommandButton1_Click()
    Dim z As Long
    With ThisWorkbook.Sheets("ListBoxDaten")
        z = .UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
        If z < 1 Then z = 1
        .Cells(z, 1) = ComboBox1.Value
        .Cells(z, 2) = ComboBox2.Value
    End With


     ListBox1.List = Sheets("ListBoxDaten").Range("DatenListBox").Value
End Sub


Dieser funktioniert wirklich sehr gut. Habe daraus auch die Begriffe UsedRange und specialCells so wie xlCellTypeLastCell kennen gelehrnt.

Danke dir auf jeden Fall für deine Hinweise und Hilfestellungen.

Gruss
Demech


A ok. habe es gleich ausprobiert. Ist auch noch interessant zu wissen. 
Gutes Erklär Beispiel  :23:
Code:
Private Sub CommandButton1_Click()
  with Sheets("ListBoxDaten")
    .cells(rows.count,1).end(xlup).offset(1).resize(,2)=array(combobox1,combobox2)
   ListBox1.List = .cells(1).currentregion.Value
end with
End Sub

Kein Bedarf für ein 'named range'.
Seiten: 1 2 3