Zellwerte per VBA untereinander auf anderes Blatt übertragen
#1
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.


Angehängte Dateien
.xlsm   Doku_K-Stempel_v1.xlsm (Größe: 24,26 KB / Downloads: 5)
Top
#2
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
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • sturmrm
Top
#3
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
Top
#4
Hallo Rudi,

zu a

damit erweitere ich den Bereich auf die gewünschte Zeilenanzahl.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • sturmrm
Top
#5
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
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • sturmrm
Top
#6
Hallo,

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

VG Rudi
Top


Gehe zu:


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