VBA Zeilen Anzahl begrenzen
#1
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


Angehängte Dateien Thumbnail(s)
   
Top
#2
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?
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#3
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
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Tyler
Top
#4
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
Top
#5
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
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Tyler
Top
#6
Thumbs Up 
Grüezi Uwe,

Vielen Dank  23

Funktioniert Einwandfrei !

Danke
Tyler  78
Top


Gehe zu:


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