excel vba调用具有variables的子程序
我定义了下面的子例程:
Sub EnterCellValueMonthNumber(cells As range, number As Integer) range(cells).Select ActiveCell.FormulaR1C1 = number End Sub
当我像这样调用子程序时:
EnterCellValueMonthNumber ("N23:Q23",1)
我收到以下错误信息:
Compile error Expected: =
我不知道为什么我得到这个消息。 有谁知道我错过了什么?
你会打电话给子
EnterCellValueMonthNumber "N23:Q23", 1
没有括号。 要么
Call EnterCellValueMonthNumber("N23:Q23", 1)
方括号,然后Call
它。
另外,你的Sub期望一个Range对象作为第一个参数,并且你正在提供一个string; 你应该把签名改为:
Sub EnterCellValueMonthNumber(cells As String, number As Integer)
另外,我不确定你想用这个代码实现什么,因为它只会将范围的左上angular的单元格设置为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,这是没有必要的,只会在未来给你带来问题。
你实际上有两个问题。
首先是你的问题的实际答案。 你需要说:
Call EnterCellValueMonthNumber("N23:Q23",1)
但是,如果你运行它,你仍然不会工作,因为你已经设置了cells
的typesrange
…设置为typesstring
而不是:
Sub EnterCellValueMonthNumber(cells As String, number As Integer) Range(cells).Select ActiveCell.FormulaR1C1 = number End Sub
试试下面的代码:
Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer) Range(cells).Select ActiveCell.FormulaR1C1 = number End Sub