VBA: Quellbereich nach dem Kopieren löschen
Schritt-für-Schritt-Anleitung
Um den Quellbereich nach dem Kopieren in Excel VBA zu löschen, folge diesen Schritten:
-
Öffne den VBA-Editor: Drücke ALT + F11
, um den VBA-Editor in Excel zu öffnen.
-
Füge das Makro hinzu: Erstelle ein neues Modul oder öffne ein bestehendes und füge den folgenden Code ein:
Sub import()
Dim strDateiname As String
Dim wksZiel As Worksheet, wkbQuelle As Workbook, wksQuelle As Worksheet
Dim loLetzte1 As Long
Dim loLetzte2 As Long
Dim inLetzte As Integer
Dim i As Long
Worksheets("Import").Range("A6:K1000").ClearContents
Application.ScreenUpdating = True
strDateiname = Dir(ThisWorkbook.Path & "\*.xlsm")
Set wksZiel = ThisWorkbook.Worksheets("Import")
Do While strDateiname <> ""
If strDateiname <> ThisWorkbook.Name Then
Set wkbQuelle = Workbooks.Open(Filename:=ThisWorkbook.Path & "\" & strDateiname)
With wkbQuelle
For i = 1 To .Worksheets.Count
If .Worksheets(i).Name = "Plan" Then
Set wksQuelle = .Worksheets("Plan")
loLetzte1 = wksZiel.Cells(Rows.Count, 3).End(xlUp).Row
With wksQuelle
loLetzte2 = wksQuelle.Cells(Rows.Count, 2).End(xlUp).Row
inLetzte = .UsedRange.SpecialCells(xlCellTypeLastCell).Column
.Range(.Cells(3, 1), .Cells(loLetzte2, inLetzte)).Copy _
Destination:=wksZiel.Cells(loLetzte1 + 1, 2)
.Range(.Cells(3, 1), .Cells(loLetzte2, inLetzte)).ClearContents ' Quellbereich löschen
End With
End If
Next i
.Close True
End With
End If
strDateiname = Dir
Loop
Set wkbQuelle = Nothing: Set wksQuelle = Nothing: Set wksZiel = Nothing
Application.ScreenUpdating = True
End Sub
-
Ändere die Zeile für das Löschen: Der Code .Range(.Cells(3, 1), .Cells(loLetzte2, inLetzte)).ClearContents
sorgt dafür, dass der kopierte Bereich nach dem Kopieren geleert wird.
-
Führe das Makro aus: Schließe den VBA-Editor und gehe zurück zu Excel. Führe das Makro aus, um die gewünschten Daten zu kopieren und den Quellbereich zu löschen.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn du den Quellbereich auf andere Weise löschen möchtest, kannst du auch die Delete
-Methode verwenden:
.Range(.Cells(3, 1), .Cells(loLetzte2, inLetzte)).Delete
Diese Methode entfernt die Daten vollständig. Wenn du nur die Inhalte löschen möchtest, verwende ClearContents
, wie im obigen Beispiel beschrieben.
Praktische Beispiele
Wenn du häufig mit eingebetteten Objekten in Excel arbeitest und diese löschen möchtest, kannst du die folgende Zeile einfügen, um alle eingebetteten Objekte zu löschen:
ActiveSheet.OLEObjects.Delete
Diese Zeile kann nach dem Kopieren und Löschen des Quellbereichs eingefügt werden.
Tipps für Profis
- Nutze Fehlerbehandlung, um das Makro robuster zu machen. Verwende
On Error Resume Next
, um Fehler zu ignorieren, oder On Error GoTo
, um spezifische Fehler zu behandeln.
- Halte deine Excel-Umgebung sauber, indem du regelmäßig nicht mehr benötigte eingebettete Objekte entfernst.
- Mache Sicherheitskopien deiner Arbeitsmappen, bevor du Makros ausführst, die Daten löschen.
FAQ: Häufige Fragen
1. Wie kann ich einen kopierten Link löschen?
Um einen kopierten Link zu löschen, nutze die Funktion ClearContents
auf der entsprechenden Zelle.
2. Kann ich das Makro anpassen, um nur bestimmte Zeilen zu löschen?
Ja, du kannst die Range in der ClearContents
-Methode anpassen, um nur die gewünschten Zeilen zu leeren. Zum Beispiel, um nur die Zeilen 3 bis 34 zu löschen, verwende:
.Range("3:34").ClearContents