Ich habe ein Makro, das einige Spalten aus einem BD-Blatt kopiert und in ein anderes Blatt einfügt.Sheet.Select + Kopieren/Einfügen wird nicht funktionieren [Excel 2016]
Ich habe diesen Code in Excel 2007 funktioniert, aber ich habe ein Problem bei der Auswahl eines Blattes, dann Kopieren/Einfügen in Excel 2010 und später. Es scheint das Problem ist nicht in meinem .Select
. Es scheint in der PasteSpecial()
zu sein, die automatisch die with Sheet()
auswählt und andere .copy()
ausführt, ohne zum vorherigen Blatt zurückzukehren (der Bildschirm blinkt alle) - ich weiß nicht, ob ich klar genug war. [Manchmal funktioniert es gut, vor allem Debugger]
-Code
Const BD_SHEET As String = "Estrategia"
Const PRICE_SHEET As String = "Precos"
Public Sub Execute()
....
actualCalculate = Application.Calculation
Application.Calculation = xlCalculationManual
LoadPrices()
Application.Calculate
Application.Calculation = actualCalculate
End Sub
Private Sub LoadPrices()
Dim lastSheet As Worksheet
Set lastSheet = ActiveSheet
Sheets(BD_SHEET).Select
lastRow = [A1000000].End(xlUp).row
With Sheets(PRICE_SHEET)
Range(Cells(2, 2), Cells(lastRow, 2)).Copy
.[A2].PasteSpecial xlPasteValues '<---- Working
Range(Cells(2, 7), Cells(lastRow, 7)).Copy
.[B2].PasteSpecial xlPasteValues '<---- Working
Range(Cells(2, 9), Cells(lastRow, 10)).Copy '<---- Error!
.[C2].PasteSpecial xlPasteValues
Range(Cells(2, 12), Cells(lastRow, 12)).Copy '<---- Error!
.[E2].PasteSpecial xlPasteValues
End With
lastSheet.Select
End Sub
I .Select
entfernen und hinzufügen Set theSheet = Sheets(BD_SHEET)
aber der Code wird durty sein.
Exemple:
...
Set lastSheet = ActiveSheet
Set bdSheet = Sheets(BD_SHEET)
lastRow = [A1000000].End(xlUp).row
With Sheets(PRICE_SHEET)
bdSheet.Range(bdSheet.Cells(2, 2), bdSheet.Cells(lastRow, 2)).Copy
.[A2].PasteSpecial xlPasteValues
End With
...