2013-12-16 66 views
1

我有一行vba,我試圖在受保護的工作表上設置一個引用範圍的Range對象。如果我使用下面的行正常工作:之間的區別: - 範圍(單元格(2,3),單元格(lastRow,3))和範圍(「C2:C23」)?

Set rngList = wsTemp.Range("C2:C23") 

但由於某些原因,它有一個打破「對象‘工作表’的方法‘範圍’失敗」的錯誤,如果我使用了類似的線路:

Set rngList = weTemp.Range(Cells(2, 3), Cells(lastRow, 3)) 

lastRow是一個整數和= 23,所以兩行應該同樣工作?

+0

僅供參考 - @亞洲時報Siddharth的回答顯示出正確的做法,但你的第二個版本休息的時候'wsTemp'不是ActiveSheet。在沒有對特定工作表的引用的情況下調用'Cells()'將意味着它默認爲ActiveSheet。這使得你的代碼依賴於一個特定的表單處於活動狀態,這通常是一件壞事。 –

回答

1

這是因爲您的單元格對象不完全合格。試試這個

Set rngList = weTemp.Range(weTemp.Cells(2, 3), weTemp.Cells(lastRow, 3)) 

With weTemp 
    Set rngList = .Range(.Cells(2, 3), .Cells(lastRow, 3)) 
End With