2017-07-27 66 views
1

我在調用sub時遇到問題。錯誤消息是錯誤的參數數量或無效的屬性分配。我嘗試了很多變化,沒有任何工作。在VBA中調用Sub時出錯

Sub last_non_empty_cell_in_a_row() 

Dim rngCell As Range, i As Long 

Set rngCell = Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlFormulas, 
LookAt _ 
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:= _ 
False, SearchFormat:=False) '.Activate 
i = rngCell.Row 

End Sub 


Sub code_main() 

Dim x As Long 

Call last_non_empty_cell_in_a_row(i) 

For x = 1 To i 
If Range("R" & x) = "m_M" Then 
If Range("P" & x) = "m_DH" Then 
If Range("Q" & x) = "" Then 
Else 
Range("P" & x, "R" & x).Interior.ColorIndex = 22 
End If 
Else 
Range("P" & x, "R" & x).Interior.ColorIndex = 22 
End If 
Else 
Range("P" & x, "R" & x).Interior.ColorIndex = 0 

End If 

Next x 



End Sub 
+4

你傳入'i'成'last_non_empty_cell_in_a_row'。 Sub不帶參數。 –

回答

2

你想改變last_non_empty_cell_in_a_rowFunction並讓它返回i值。

Function last_non_empty_cell_in_a_row() As Long 

Dim rngCell As Range, i As Long 
Set rngCell = Cells.Find(What:="*", After:=Cells(1, 1), LookIn:=xlFormulas, 
LookAt _ 
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:= _ 
False, SearchFormat:=False) '.Activate 
i = rngCell.Row 
last_non_empty_cell_in_a_row = i 
End Function 

然後,在調用過程中:

Sub code_main() 

Dim x As Long 

For x = 1 to last_non_empty_cell_in_a_row() 
... 

可能有其他的問題或錯誤,我沒有測試。值得注意的是,last_non_empty_cell_in_a_row似乎是一個函數簽名,並不真正描述函數返回的內容。對於如何獲得在給定範圍或工作表的「最後一個單元格」,請參閱:

Error in finding last used cell in VBA

+2

另一種選擇是修改Sub以接受ByRef參數。 –

+0

謝謝!這非常有用且有幫助。它工作正常。無論如何,將它從Sub()轉換爲function()將無法單獨調用該宏,對吧? – RafMil

+0

@RafMil是的,你不能從宏菜單中調用它。 –

相關問題