2016-11-03 19 views
1

當使用對於範圍中的每個單元格,我想使用cell.row屬性來引用當前單元格的行。但是,如果我在另一個Sub中使用它,我會收到錯誤運行時錯誤:'424'對象需要對於Range中的每個單元格都不能帶入另一個Sub?

下面是一個簡單的代碼來說明我的意思。我是否做錯了什麼或者是否有辦法在另一個Sub中引用當前單元格的行?謝謝!

Sub CommandButton2_Click() 

Dim rng As Range 
Set rng = Range("P290:P293") 

For Each cell In rng 
    Third 
Next cell 

End Sub 

Sub Third() 

MsgBox cell.row 

End Sub 
+1

在任何一個過程中,您都沒有聲明'cell',因此,它們同時隱式地是'Variant'類型,它們也僅在過程級別作用域,這意味着即使兩個過程共享名稱「cell」 ,那兩個不同的「細胞」是兩回事。在'Third'過程中,'cell'是一個未定義的變量,一個空/無/空字符串,它沒有'.row'屬性。正確的範圍,傳遞變量,以及最重要的**聲明**你的變量將幫助你避免這些錯誤。 –

+0

謝謝!不好意思,因爲這是我第一次寫宏>。< – yingxuan

回答

2
Sub CommandButton2_Click() 

Dim rng As Range, cell As Range 
Set rng = Range("P290:P293") 

For Each cell In rng 
    Third cell 
Next cell 

End Sub 

Sub Third(cell As Range) 

MsgBox cell.row 

End Sub 

你需要把它作爲參數傳遞。

+1

或使用'公共單元格作爲範圍'使'單元格全局變量'# – Vasily

+0

@你真的可以 - 但是在一個循環中,你將不得不'設置'每次迭代意味着更多的開銷。對於不循環的代碼,使用公共範圍變量會更容易 –

+0

我不這麼認爲,我認爲'excel 95'的時間已經結束了,所以用戶自己應該使用它。我的意見只是添加額外的選項... +1從我身邊 – Vasily

相關問題