Sie sind wahrscheinlich auf eine Situation gestoßen, in der Sie einen bestimmten Bereich von Zellen in Excel kopieren und an einen anderen Ort verschieben müssen. Dies kann nützlich sein, wenn Sie Daten sortieren, Berichte erstellen oder andere Operationen mit Ihren Tabellen und Daten durchführen möchten.
Um dies zu tun, können Sie die in Excel integrierte Programmiersprache VBA (Visual Basic for Applications) verwenden, um diesen Prozess zu automatisieren. Mit VBA können Sie Makros und Skripts erstellen, die verschiedene Aufgaben in Excel ausführen, einschließlich Kopieren und Verschieben von Daten.
Eine Möglichkeit, dies in VBA zu tun, besteht darin, die "Copy" -Methode für das Range-Objekt zu verwenden. Sie können den ursprünglichen Bereich angeben, den Sie kopieren möchten, und dann mit der Paste-Methode den Speicherort angeben, an den Sie ihn verschieben möchten.
Beispielcode:
Sub CopyAndPasteRange()
Dim sourceRange As Range
Dim targetRange As Range
'Geben Sie den zu kopierenden Quellbereich an
Set sourceRange = Worksheets("Sheet1").Range("A1:B10")
'Geben Sie an, wo der Bereich kopiert werden soll
Set targetRange = Worksheets("Sheet2").Range("C1")
'Bereich kopieren
sourceRange.Copy
'Kopierten Bereich am Zielort einfügen
targetRange.PasteSpecial
End Sub
In diesem Beispiel geben wir den ursprünglichen Bereich an, der sich im Bereich "A1:B10" auf dem Arbeitsblatt "Sheet1" befindet. Dann geben wir an, wo der Bereich verschoben werden soll - auf dem Blatt "Sheet2" in die Zelle "C1". Wir kopieren und fügen einen Bereich mit den Methoden "Copy" und "PasteSpecial" ein.
Mit ähnlichem Code können Sie Bereiche einfach mit VBA in Excel kopieren und verschieben. Dies kann nützlich sein, um sich wiederholende Aufgaben zu automatisieren und Ihre Arbeit mit Daten in Excel zu beschleunigen.
Wie kopiere ich einen Bereich in VBA Excel
In Excel VBA können Sie einen Datenbereich einfach mit der Range-Methode kopieren. Mit dieser Methode können Sie den gewünschten Bereich auswählen und an einen anderen Speicherort kopieren.
Um zu beginnen, müssen Sie den ursprünglichen Bereich definieren, den Sie kopieren möchten. Sie können es explizit angeben, z. B. als Range("A1:C5"), oder Variablen anstelle von hartcodierten Werten verwenden.
Dim sourceRange As RangeSet sourceRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:C5")
Erstellen Sie dann einen neuen Bereich, in den der ursprüngliche Bereich kopiert werden soll. Es kann ein Bereich der gleichen Form und Größe sein, oder Sie können einen anderen Bereich angeben. In diesem Beispiel erstellen wir einen neuen Bereich auf dem Arbeitsblatt "Sheet2" in der Zelle "D1".
Dim destinationRange As RangeSet destinationRange = ThisWorkbook.Worksheets("Sheet2").Range("D1")
Verwenden Sie dann die Copy-Methode, um das Kopieren durchzuführen. Geben Sie den Quellbereich und sein Ziel als Argumente an.
sourceRange.Copy destinationRange
Vollständiger Beispielcode:
Sub CopyRange()Dim sourceRange As RangeDim destinationRange As Range' Исходный диапазонSet sourceRange = ThisWorkbook.Worksheets("Sheet1").Range("A1:C5")' Место назначенияSet destinationRange = ThisWorkbook.Worksheets("Sheet2").Range("D1")' КопированиеsourceRange.Copy destinationRangeEnd Sub
Nachdem dieser Code ausgeführt wurde, wird der ausgewählte Bereich kopiert und an den angegebenen Speicherort verschoben.
Sie können auch andere Methoden und Eigenschaften des Range-Objekts verwenden, um den ursprünglichen Bereich vor dem Kopieren zu ändern, z. B. um seine Größe oder das Format zu ändern. Wenn Sie nur Werte oder Formatierungen kopieren möchten, können Sie die entsprechenden Range-Methoden und -Eigenschaften verwenden.
Bereich abrufen
In VBA Excel gibt es mehrere Möglichkeiten, einen Datenbereich abzurufen. Betrachten Sie die am häufigsten verwendeten.
-
Verwenden der Range-Methode des Worksheet-Objekts :
Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Название_листа")Dim rng As RangeSet rng = ws.Range("A1:C10")
Dim rng As RangeSet rng = ThisWorkbook.Worksheets("Название_листа").Range(Cells(1, 1), Cells(10, 3))
Dim rng As RangeSet rng = ThisWorkbook.Worksheets("Название_листа").Cells(1, 1).Resize(10, 3)
In allen drei Beispielen erhalten wir einen Datenbereich von 10 Zeilen pro 3 Spalten. Sie können diese Beispiele an Ihre Bedürfnisse anpassen, indem Sie die gewünschte Anzahl von Zeilen und Spalten angeben.
Der resultierende Bereich kann zum Kopieren, Einfügen, Löschen oder anderen Datenoperationen verwendet werden.
Bereich kopieren
In VBA für Excel können Sie die Methoden und Eigenschaften des Range-Objekts verwenden, um einen Zellbereich zu kopieren und an einen anderen Speicherort zu verschieben. Ein Bereich kann in dieselbe Arbeitsmappe oder in eine andere Arbeitsmappe kopiert werden.
Führen Sie die folgenden Schritte aus, um einen Zellbereich in VBA Excel zu kopieren:
- Definieren Sie die Objekte SourceRange (Quellbereich) und DestinationRange (Zielbereich), die die zu kopierenden bzw. zu verschiebenden Bereiche darstellen.
- Kopieren Sie Werte, Formeln oder Formatierungen mithilfe der Copy-Methode und der Value-, Formula- oder Format-Eigenschaft des Range-Objekts.
- Fügen Sie die kopierten Werte, Formeln oder Formatierungen mithilfe der Paste-Methode und der Value-, Formula- oder Format-Eigenschaft des Range-Objekts ein.
Hier ist ein Beispielcode, der veranschaulicht, wie ein Bereich kopiert und an einen anderen Ort verschoben wird:
Sub CopyRange()Dim SourceRange As RangeDim DestinationRange As Range' Определение исходного и целевого диапазоновSet SourceRange = ThisWorkbook.Sheets("Sheet1").Range("A1:B5")Set DestinationRange = ThisWorkbook.Sheets("Sheet2").Range("C1:D5")' Копирование значений из исходного диапазонаDestinationRange.Value = SourceRange.ValueEnd Sub
In diesem Beispiel definieren wir die Objekte SourceRange und DestinationRange für die entsprechenden Bereiche in Arbeitsmappen. Dann kopieren wir die Werte aus dem Quellbereich mithilfe der Value-Eigenschaft in den Zielbereich.
Mit der Copy-Methode und der Value-Eigenschaft (oder Formula oder Format ) können Sie daher problemlos einen Zellbereich in Excel VBA kopieren und verschieben.
Verschieben eines Bereichs
In Excel VBA können Sie einen Datenbereich einfach mit ein paar Zeilen Code an einen anderen Speicherort verschieben. Dazu wird die Methode verwendet Copy und die Methode PasteSpecial.
Bevor Sie einen Bereich verschieben, müssen Sie angeben, wo und wo er verschoben werden soll. Dazu können Sie Variablen verwenden, die auf die Quell- und Zielbereiche verweisen.
Sub MoveRange()Dim sourceRange As RangeDim targetRange As Range' Указываем исходный диапазонSet sourceRange = Range("A1:C5")' Указываем целевой диапазонSet targetRange = Range("E1:G5")' Копируем и перемещаем исходный диапазон в целевойsourceRange.CopytargetRange.PasteSpecial' Очищаем буфер обменаApplication.CutCopyMode = FalseEnd Sub
Im folgenden Beispiel werden zunächst die Variablen sourceRange und targetRange erstellt, die jeweils Verweise auf die Quell- und Zielbereiche enthalten. Die Copy-Methode kopiert dann die Daten aus dem Quellbereich in die Zwischenablage, und die PasteSpecial-Methode fügt sie in den Zielbereich ein. Schließlich wird die Application-Methode aufgerufen.CutCopyMode = False , um die Zwischenablage zu löschen.
Auf diese Weise können Sie den Datenbereich mithilfe der Copy- und PasteSpecial-Methoden problemlos in Excel-VBA verschieben.
Beispiel für die Verwendung von VBA Excel
Angenommen, wir haben zwei Tabellen in einer Arbeitsmappe - "Tabelle1" und "Tabelle2". Wir müssen den Wertebereich aus "Tabelle1" kopieren und in "Tabelle2" verschieben.
Führen Sie dazu die folgenden Schritte aus:
- Öffnen Sie Visual Basic für Applikationen, indem Sie auf klicken Alt+F11.
- Wählen Sie im folgenden Fenster "Tabelle1" aus der Liste "Projektbereiche-VBAProject" aus.
- Fügen Sie den folgenden VBA-Code ein:
4. Schließen Sie das Visual Basic für Applikationen-Fenster, indem Sie auf klicken Alt+Q.
Wenn Sie nun den Bereich von "Tabelle1" in "Tabelle2" kopieren und verschieben möchten, führen Sie einfach die folgenden Schritte aus:
- Öffnet eine Arbeitsmappe mit Tabellen.
- Drücken Alt+F8 um das Fenster "Makros" zu öffnen.
- Wählen Sie das Makro "CopyAndMove" aus der Liste aus und klicken Sie auf "Ausführen".
Der Wertebereich aus Tabelle1 wird nun kopiert und in Tabelle2 verschoben.