2017-07-14 9 views
0

Ich bin Kopieren und eine Reihe in der ersten leeren Spalte mit dem folgenden Code einfügen:Excel VBA - Kopieren und Einfügen Spalt dann klar Konstanten

Private Sub CommandButton2_Click() 
Dim lastCol As Long 
lastCol = Cells(4, Columns.Count).End(xlToLeft).Column 

Sheets("My Sheet").Range("D4:D119").Copy 
With Cells(4, lastCol + 1) 
    .PasteSpecial Paste:=xlPasteAllUsingSourceTheme 
    .EntireColumn.AutoFit 
    .SpecialCells(xlCellTypeConstants).ClearContents 
End With 
End Sub 

Das gewünschte Ergebnis ist dann die Konstanten aus dem kopierten Bereich löscht Der obige Code löscht jedoch alle Konstanten im Arbeitsblatt. Jede Hilfe wird sehr geschätzt.

Danke.

Antwort

2

Wenn nur eine Zelle als Quelle verwendet wird, wird das gesamte Blatt verwendet. Ändern Sie einfach die Zeile:

.EntireColumn.SpecialCells(xlCellTypeConstants).ClearContents 

oder (wenn Sie wollen auch Zeile 1 bis 3 in dieser Spalte ausschließen):

Range(Cells(4, lastCol + 1),Cells(Rows.Count, lastCol + 1)).SpecialCells(xlCellTypeConstants).ClearContents 
+0

Vielen Dank für Ihre Hilfe, Range (Cells (4, LASTCOL + 1), Cells (Rows.Count, lastCol + 1)) .SonderCells (xlCellTypeConstants) .ClearContents hat den Trick gemacht. – Adzbo

+0

Noch eine Frage dazu: Der Code kopiert nur den Bereich und fügt ihn einmal in die erste leere Spalte ein. Wenn ich erneut auf die Befehlsschaltfläche klicke, scheint er einfach in dieselbe Spalte zu kopieren und nicht wie erwartet in die nächste leere Spalte einzufügen . Irgendwelche Vorschläge? Vielen Dank. – Adzbo

+0

Haben Sie die Zeile 'lastCol = ...' erneut ausgeführt? Und wird die Zelle in Reihe 4 benutzt? –