Clever-Excel-Forum

Normale Version: Zellwerte per VBA untereinander auf anderes Blatt übertragen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

mit meinen kaum vorhandenen VBA-Kentnissen komm ich momentan nicht weiter.
Velleicht kann mir jemand bei folgendem helfen.

Es werden zweimal pro Tag Kontrollstempel dokumentiert. Dabei werden im Tabellenblatt "Eingabe" Datum, Uhrzeit, der Name des Prüfers und der K-Stempel erfasst.
Nur die gelben Zellen werden befüllt.
Sachnummer und Benennung im Blatt "Eingabe" bleiben gleich.

Alle Daten sollen dann per Befehlsschaltfläche in das Tabellenblatt "Datensammlung" untereinander kopiert werden.
Die Werte der nächsten Prüfung sollten also im Blatt Datensammlung" ab Zeile 26 nach unten eingefügt werden.
Anschließend sollen die Zahlen in den Zellen C9:C20 des Tabellenblattes "Eingabe" entfernt werden.

Das kopieren von Datum, Uhrzeit und Prüfer funktioniert.

Wie kann ich den VBA-Code ändern, damit auch die jeweiligen Sachnummern, Benennungen und K-Stempel übertragen werden?

Im Anhang ein kleines Beispiel mit dem was ich bereits habe.

Vielen Dank für eure Hilfe und einen schönen Rest-Sonntag.
Hallo,

mal ein Ansatz

Code:
Private Sub cmdUebernehmen_Click()
  'Variable definieren
  Dim lngErsteLeereZeile As Long
  Dim i As Long
  
  'der Variablen Werte zuweisen
  lngErsteLeereZeile = Worksheets("Datensammlung").Cells(Rows.Count, 1).End(xlUp).Row + 1
  
  i = Worksheets("Eingabe").Cells(Rows.Count, 1).End(xlUp).Row - 8
  
  
  'Werte in das Tabellenblatt "Datensammlung" übernehmen
  With Worksheets("Datensammlung")
      .Cells(lngErsteLeereZeile, 4).Resize(i, 3).Value = Worksheets("Eingabe").Cells(9, 1).Resize(i, 3).Value
      
      .Cells(lngErsteLeereZeile, 1).Resize(i).Value = Worksheets("Eingabe").Cells(3, 2).Value   'Datum
      .Cells(lngErsteLeereZeile, 2).Resize(i).Value = Worksheets("Eingabe").Cells(4, 2).Value   'Uhrzeit
      .Cells(lngErsteLeereZeile, 3).Resize(i).Value = Worksheets("Eingabe").Cells(5, 2).Value   'Prüfer
      
      
  End With
  
  Worksheets("Eingabe").Range("C9:C20").ClearContents
  
End Sub
Halllo Stefan,

vielen Dank für Deine Hilfe. Das funktioniert.

Magst Du mir noch zwei Fragen beantworten?

a) was bewirkt Resize?

b) worin liegt der Unterschied zwischen

.Range("C9:C20"). value =""

und

.Range("C9:C20"). ClearContents



VG Rudi
Hallo Rudi,

zu a

damit erweitere ich den Bereich auf die gewünschte Zeilenanzahl.
Moin!
Zu b)
Das ist eigentlich Jacke wie Hose.
.Value = "" überschreibt den Zelleninhalt mit einem Leerstring (man könnte auch = vbNullstring nehmen).
.ClearContents löscht die Inhalte, was aufs Gleiche hinausläuft.

Die nachträgliche Prüfung einzelner Zellen auf IsEmpty(Zelle) ergibt in beiden Fällen True

Ich würde aber stets die Methode .ClearContents nehmen als eine Zuweisung eines Leerwerts.
Ist aber letztlich Geschmackssache.

Gruß Ralf
Hallo,

Vielen Dank an Stefan und Ralf für die Erklärung.

VG Rudi