Kopieren einer Zeile in Excel VBA

Excel mit VBA zu programmieren ist nicht mehr so ​​beliebt wie früher. Es gibt jedoch immer noch viele Programmierer, die es vorziehen, wenn sie mit Excel arbeiten. Wenn Sie einer dieser Menschen sind, ist dieser Artikel für Sie.

Das Kopieren einer Zeile in Excel VBA ist das, wofür Excel VBA wirklich nützlich ist. Möglicherweise möchten Sie, dass eine Datei aller Belege mit Datum, Konto, Kategorie, Anbieter, Produkt / Service und Kosten zeilenweise eingegeben wird - eine Instanz des sich entwickelnden Rechnungswesens anstelle des statischen Rechnungswesens. Dazu müssen Sie in der Lage sein, eine Zeile von einem Arbeitsblatt in ein anderes zu kopieren.

Ein Excel VBA-Beispielprogramm, das eine Zeile aus einem Arbeitsblatt in ein anderes kopiert und der Einfachheit halber nur drei Spalten verwendet, enthält:

  • Eine Alpha-Spalte für Text
  • Eine numerische Spalte - eine automatische Summe wird auf dem Zielarbeitsblatt erstellt
  • Eine Datumsspalte - das aktuelle Datum und die Uhrzeit werden automatisch ausgefüllt

Überlegungen zum Schreiben von Excel VBA-Code

Um ein Ereignis auszulösen, das die Zeile kopiert, verwenden Sie das Standard-a-Button-Formularsteuerelement. Klicken Sie in Excel auf der Registerkarte Entwickler auf Einfügen. Wählen Sie dann das Button Form Control aus, und zeichnen Sie die Schaltfläche, wo Sie es möchten. Excel zeigt automatisch ein Dialogfeld an, in dem Sie ein durch das Klickereignis der Schaltfläche ausgelöstes Makro auswählen oder ein neues erstellen können.

Es gibt verschiedene Möglichkeiten, die letzte Zeile im Zielarbeitsblatt zu finden, damit das Programm eine Zeile unten kopieren kann. In diesem Beispiel wird die Nummer der letzten Zeile im Arbeitsblatt beibehalten. Um die Nummer der letzten Zeile beizubehalten, müssen Sie diese Nummer irgendwo speichern. Dies kann ein Problem sein, da der Benutzer die Nummer möglicherweise ändert oder löscht. Um dies zu umgehen, platzieren Sie es in der Zelle direkt unter der Formularschaltfläche. Auf diese Weise ist es für den Benutzer nicht zugänglich. (Am einfachsten geben Sie einen Wert in die Zelle ein und bewegen den Knopf darüber.)

Code zum Kopieren einer Zeile mit Excel VBA

Sub Add_The_Line () Dim currentRow As Integer Sheets ("Sheet1"). Select currentRow = Range ("C2"). Value Rows (7). Select Selection.Copy Sheets ("Sheet2"). Select Rows (currentRow). Select ActiveSheet .Paste Dim theDate As Date theDate = Now () Cells (currentRow, 4) .Value = CStr (theDate) Cells (currentRow + 1, 3) .Activate Dim rTotalCell As Range Set rTotalCell = _ Sheets ("Sheet2"). Cells (Rows.Count, "C"). End (xlUp) .Offset (1, 0) rTotalCell = WorksheetFunction.Sum _ (Range ("C7", rTotalCell.Offset (-1, 0)) Sheets ("Sheet1" ) .Range ("C2"). Value = currentRow + 1 End Sub

Dieser Code verwendet xlUp, eine "magische Zahl" oder technisch gesehen eine aufgezählte Konstante, die von der End-Methode erkannt wird. Der Versatz (1,0) rückt einfach eine Zeile in derselben Spalte nach oben, sodass als Nettoeffekt die letzte Zelle in Spalte C ausgewählt wird.

In Worten heißt es in der Erklärung:

  • Gehe zur letzten Zelle in Spalte C (entspricht Ende + Pfeil nach unten).
  • Gehen Sie dann zurück zur letzten nicht verwendeten Zelle (entspricht dem Ende + Aufwärtspfeil)..
  • Dann gehe noch eine Zelle hoch.

Die letzte Anweisung aktualisiert die Position der letzten Zeile.

VBA ist wahrscheinlich schwieriger als VB.NET, da Sie sowohl VB- als auch Excel-VBA-Objekte kennen müssen. Die Verwendung von xlUP ist ein gutes Beispiel für die Art von Fachwissen, das für das Schreiben von VBA-Makros von entscheidender Bedeutung ist, ohne drei verschiedene Dinge für jede von Ihnen codierte Anweisung nachzuschlagen. Microsoft hat große Fortschritte beim Aktualisieren des Visual Studio-Editors erzielt, um die korrekte Syntax zu ermitteln, aber der VBA-Editor hat sich nicht wesentlich geändert.