当sub需要参数时,VBA提供语法错误

时间:2019-06-27 20:21:37

标签: excel vba

如图所示,test1呼叫FillEmptyWith,但这给了我

  

编译错误:=预期

有人可以帮忙吗?

Sub FillEmptyWith(Range, val)
    For Each cell In Range
        If IsEmpty(cell) Then
            cell.Value = val
        End If
    Next cell
End Sub

Sub test1()
   FillEmptyWith ((Sheets("In Force Earnix").Range("S10:S20")),"N")
End Sub

2 个答案:

答案 0 :(得分:5)

我会避免使用Rangeval作为变量名。

在调用子程序时,不要将第一个参数括在括号中(因为这会使该范围作为2-D数组而不是Range对象传递给子程序)。

调用子程序时根本不需要括号。

Sub FillEmptyWith(rng As Range, v)
    Dim cell as range
        For Each cell In rng.Cells
        If IsEmpty(cell) Then
            cell.Value = val
        End If
    Next cell
End Sub

Sub test1()
    FillEmptyWith Sheets("In Force Earnix").Range("S10:S20"),"N"
End Sub

相关:VBA: Usage of parentheses for a method

答案 1 :(得分:0)

正如@TimWilliams指出的那样,括号引起了问题。如果愿意,可以 使用括号,但只能使用一对:

Call FillEmptyWith(Sheets("In Force Earnix").Range("S10:S20"),"N")