2017-07-27 7 views
1

subを呼び出す際に問題が発生しました。エラーメッセージの引数数が正しくないか、プロパティの割り当てが無効です。私は多くのバリエーションを試してみましたが、何もしませんでしたVBAのCall 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

あなたは '' last_non_empty_cell_in_a_row'にi'を渡しています。 Subはパラメータをとらない。 –

答えて

2

あなたはFunctionlast_non_empty_cell_in_a_rowを変更し、それが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

別のオプションは、SubRefパラメータを受け入れるようにSubを変更することです。 –

+0

ありがとう!それは非常に便利で有用でした。それは正常に動作しています。とにかく、それをSub()からfunction()に変換すると、そのマクロを個別に呼び出すことはできません。 – RafMil

+0

@RafMilはい、マクロメニューのように呼び出すことはできません。 –

関連する問題