2017-06-28 40 views
0

如果通過工作表「sheetCTF」調用該子部分,那麼它就起作用。如果是通過工作表「sheetEXTRACTED」叫然後我得到VBA:從不同的工作表調用運行時錯誤1004?

「運行時錯誤1004 - 對象‘_Worksheet’的方法‘範圍’失敗」

爲什麼?

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 

(工作表設置在不同的模塊中)。

+0

你在哪裏設置'extractedFirstRow'?這是一個公共/全局變量,可用於例程嗎? 'sheetEXTRACTED'和'sheetCTF'是VBE中實際的圖紙名稱還是它們的標籤名稱?在這種情況下,您需要'工作表(「sheetextractor」)' –

+0

對不起,是'extractedFirstRow'是一個不同模塊中的全局變量。是的,他們都是在不同的模塊中設置的實際工作表名稱。 – Slab

回答

1

我建議:

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 

這應該解決的問題。如果對像「range()」或「Cells」這樣的對象的引用沒有明確定義,那麼錯誤就會消失。

+0

啊。非常感謝。 – Slab

+0

不客氣! –