Clever-Excel-Forum

Normale Version: VBA Zeilen Anzahl begrenzen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Community,

ich steh vor einem kleinen Problem und hoffe, dass mir geholfen werden kann. Ich habe leider keine Lösung gefunden Huh
Ich habe eine kleine Userform gebastelt die fortlaufend drei Werte in ein Tabellenblatt überträgt. (nichts großes)
[
Bild bitte so als Datei hochladen: Klick mich!
]

Das funktioniert auch hervorragend, allerdings möchte ich die Anzahl der Zeilen begrenzen.
So das z.B. nach 8 Zeilen mit eingetragenen Werten, die älteste / oberste Zeile gelöscht wird.

Hier mein bisheriger code:

Private Sub Knopf_Übertragen_Click()

Dim last As Integer

last = Worksheets("Blatt5").Cells(Rows.Count, 1).End(xlUp).Row + 1

    Worksheets("Blatt5").Cells(last, 1).Value = UserForm1.TextBox1.Value
    Worksheets("Blatt5").Cells(last, 2).Value = UserForm1.TextBox2.Value
    Worksheets("Blatt5").Cells(last, 3).Value = UserForm1.TextBox3.Value
   
End Sub


Habt ihr eine Idee wie der Code erweitert werden müsste um die Anzahl der Zeilen zu begrenzen?

Ich Bedanke mich recht Herzlich Rolleyes 
Tyler
Hallo,

in Anbetracht von über einer Million Zeilen in Excel und unter Berücksichtigung der Überlegung, dass gelöschte Inhalte spätere Nachforschungen unmöglich machen, die (rhetorische) Frage warum willst du so vorgehen?
Hallo

ich habe noch eine ganz andere Idee.  Warum schreibst du den letzten Eintrag nicht ganz oben, in Zeile 2 ??  Schiebst die anderen Daten nach unten!
So hast deu den letzten Eintrag immer oben, ob du dann noch alte Daten übertragen willst erübrigt sich vielleicht von selbst. 
Löschen würde ich alte Daten ohnehin nicht, sie höchstens als "erledigte" in eine ander Tabelle kopieren.

mfg Gast 123

Code:
Sub Zeile_verschieben()
    Rows(3).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Rows(2).Copy Rows(3)
    Rows(2).ClearContents

    'Ab hier dein Code!
End Sub
Hallo Klaus-Dieter hallo Gast123,

@Klaus-Dieter
die Überlegung ob überhaupt Löschen hatte ich auch.
Allerdings ergeben die Daten für eine spätere Analyse keinen mehr wert, da diese nur für max 1Woche / 5-7Tage benötigt werden.
Daher war mein Gedanke, lieber keinen unnötigen Datenmüll erzeugen.

@Gast123
Ob die Aktuelle Zeile oben oder unten steht macht keinen Unterschied da eh nur die Letzten 5 Werte in Relation zueinander benötigt werden.
Und diese entsprechend abgreife, aber trotzdem Danke für die Anregung. 

Sollte die Lösung natürlich zu kompliziert werden/sein würde ich voraussichtlich auf das Löschen verzichten und den Datenmüll gelegentlich Händisch bereinigen o.ä.

Danke
Tyler
Hallo Tyler,

Code:
Sub Knopf_Übertragen_Click()
  Dim varZ As Variant
  With Worksheets("Blatt5").Range("A3:C9")
    varZ = Application.Transpose(.Value)
    ReDim Preserve varZ(1 To 3, 1 To 8)
    varZ(1, 8) = TextBox1.Value
    varZ(2, 8) = TextBox2.Value
    varZ(3, 8) = TextBox3.Value
    .Offset(-1).Resize(8).Value = Application.Transpose(varZ)
  End With
End Sub

Gruß Uwe
Grüezi Uwe,

Vielen Dank  23

Funktioniert Einwandfrei !

Danke
Tyler  78