Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Daten in letzte Zeile einfügen
#1
Hallo Community, 

ich habe gerade einen Fehler in meinem Programm entdeckt. Und zwar füge ich über eine Userform Daten in eine Tabelle.
Dabei suche ich die letzte Zeile und füge dann die Daten in die nächste freie Zeile ein. 

Nun zum Problem. Sobald jedoch ein Filter aktiviert ist, welches dann somit die "letzte Zeile" nach oben verschiebt, überschreibt das Programm die darin enthaltenen Daten.

Gibt es eine Möglichkeit die letzte Zeile auch unter Berücksichtigung des Filters zu ermitteln? Hier mein Code:

Code:
Public Function LZ() As Integer
    Dim z As Integer, i As Integer
        With Worksheets("Liste")
        For i = 2 To 8
            z = .Cells(.Rows.Count, i).End(xlUp).Row + 1
            If z > LZ Then LZ = z
        Next i
    End With
End Function


Code:
Private Sub CommandButton1_Click()
ActiveWorkbook.Save
    Dim z As Integer
    Dim ksa As Variant
   
    With Worksheets("Liste")
        z = LZ
        'ksa = WorksheetFunction.Max(Columns(1)) + 1
        ksa = Worksheets("Daten").Range("B2").Value
        .Cells(z, 1) = ksa
        .Cells(z, 2) = TextBox1.Value
        .Cells(z, 3) = TextBox2.Value
        .Cells(z, 4) = TextBox3.Value
        .Cells(z, 5) = ComboBox1.Value
        .Cells(z, 6) = ComboBox2.Value
        .Cells(z, 7) = ComboBox3.Value
        .Cells(z, 8) = Date
        .Cells(z, 9) = TextBox4.Value
        .Cells(z, 10) = "0"
        .Cells(z, 13) = "offen"
            If Strecke.Value = True Then
            .Cells(z, 14) = "x"
            ElseIf Strecke.Value = False Then
            .Cells(z, 14) = ""
            End If
        .Cells(z, 15) = TextBox16.Value
        .Cells(z, 16) = TextBox17.Value
        .Cells(z, 17) = TextBox18.Value
    End With
        TextBox5.Value = ksa
        TextBox6.Value = TextBox2.Value
        TextBox7.Value = TextBox3.Value
       
    ActiveWorkbook.Save


Man könnte natürlich vor der Abfrage alle Filter entfernen, was allerdings etwas doof wäre.
Gibt es eine andere Möglichkeit?`

Im Voraus besten Dank für die Unterstützung.

VG tyr0n
Antworten Top
#2
Hi,

Du kannst den Filterbereich auslesen und dann die die direkt darunter liegende Zeile z.B. so ermitteln:

Code:
Sub til()
Dim lngNextRow As Long
With Worksheets("Liste").AutoFilter.Range
    lngNextRow = .Row + .Rows.Count
End With
MsgBox "Nächste Zeile: " & lngNextRow
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an {Boris} für diesen Beitrag:
  • tyr0n
Antworten Top
#3
Hallo

Sorry, mir fiel beim Lesen der Antworten etwas auf, und zwar genau hier:   lngNextRow = .Row + .Rows.Count
Müsste es nicht so lauten:     lngNextRow = .Row + 1      Die letzte Zeile kann ja nicht über Rows.Count hinausgehen, oder???

mfg Gast 123
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • tyr0n
Antworten Top
#4
Hallöchen,

jein. Trifft hier so nicht zu.

Gezählt werden hier die Zeilen vom Autoflter.Range (egal, ob die sichtbar sind oder nicht). Betrifft also nicht das ganze Blatt.

Beim ganzen Blatt würde man so vorgehen:
Cells(Rows.Count, 1).End(xlUp).Row + 1
wenn es nach Spalte A geht...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 2 Nutzer sagen Danke an schauan für diesen Beitrag:
  • Gast 123, tyr0n
Antworten Top
#5
Entschuldigt die späte Rückmeldung. Es hat funktioniert. Besten Dank Boris für die Lösung! :)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste