我定义了以下子程序:
Sub EnterCellValueMonthNumber(cells As range, number As Integer)
range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
当我像这样调用子程序时:
EnterCellValueMonthNumber ("N23:Q23",1)
我收到以下错误消息:
Compile error Expected: =
我不知道为什么会收到这条消息。有谁知道我错过了什么?
答案 0 :(得分:47)
您可以将子名称为
EnterCellValueMonthNumber "N23:Q23", 1
没有括号。或
Call EnterCellValueMonthNumber("N23:Q23", 1)
括号,以及Call
之前。
此外,您的Sub期望Range对象作为第一个参数,并且您正在提供一个字符串;你应该将sub的签名改为:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
另外,我不确定你要用这个代码实现什么,因为它只会将范围的左上角单元格设置为1.会像
Range(cells).Value = number
' Or, if you're going to be passing in something more complex later...
Range(cells).FormulaR1C1 = number
更合适吗?
我也非常谨慎地使用Range("...")
而没有指定你所指的是哪张。这将取决于活动工作表中的任何一个,从而可能导致意外问题,几乎总是更喜欢SheetX.Range("...")
。同样地,对于使用.Select
,这是不必要的,并且只会在将来导致问题。
答案 1 :(得分:2)
你实际上有2个问题。
首先是你问题的实际答案。你需要说:
Call EnterCellValueMonthNumber("N23:Q23",1)
但是如果你运行它仍然无法工作,因为你设置cells
类型的range
...使用它来设置为string
类型:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub
答案 2 :(得分:0)
请尝试以下代码:
Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer)
Range(cells).Select
ActiveCell.FormulaR1C1 = number
End Sub