2017-06-28 5 views
0

Wenn dieses Sub über das Arbeitsblatt "SheetCTF" aufgerufen wird, dann funktioniert es. Wenn es über das Arbeitsblatt „sheetEXTRACTED“ genannt wird, dann werde ichVBA: Laufzeitfehler 1004 beim Aufruf aus einem anderen Arbeitsblatt?

„Laufzeitfehler 1004 - Methode‚Range‘des Objekts‚_Worksheet‘ist fehlgeschlagen“

Warum?

Public Const ctfHeadingRow As Long = 1 
Public Const ctfLastRow As Long = 200 

Sub SUB_copyCtfColsToExtracted(sourceCol As Long, destCol As Long) 

sheetCTF.Range(Cells(ctfHeadingRow, sourceCol), Cells(ctfLastRow,sourceCol)).SpecialCells(xlCellTypeVisible).Copy _ 
Destination:=sheetEXTRACTED.Range(Cells(extractedFirstRow, destCol).Address) 

End Sub 

(Blatt in einem anderen Modul).

+0

Wo stellst du 'extractedFirstRow' ein? Ist das eine öffentliche/globale Variable, die der Routine zur Verfügung steht? Sind die 'sheetEXTRACTED' und' sheetCTF' die tatsächlichen Blattnamen in VBE oder sind es die Tab-Namen? In diesem Fall benötigen Sie 'Worksheets (" sheetEXTRACTED ")' –

+0

Sorry, ja 'extractedFirstRow' ist eine globale Variable in einem anderen Modul. Und ja, sie sind beide die tatsächlichen Blattnamen in einem anderen Modul. – Slab

Antwort

1

Ich schlage vor:

Sub SUB_copyCtfColsToExtracted(sourceCol As Long, destCol As Long) 

sheetCTF.Range(sheetCTF.Cells(ctfHeadingRow, sourceCol), sheetCTF.Cells(ctfLastRow,sourceCol)).SpecialCells(xlCellTypeVisible).Copy _ 
Destination:=sheetEXTRACTED.Range(sheetEXTRACTED.Cells(extractedFirstRow, destCol).Address) 

End Sub 

dies das Problem lösen soll. Der Fehler tritt auf, wenn der Verweis auf ein Objekt wie "range()" oder "Cells" nicht eindeutig definiert ist.

+0

Ahhh. Danke vielmals. – Slab

+0

Gern geschehen! –

Verwandte Themen