32

我定义了以下子程序:

Sub EnterCellValueMonthNumber(cells As range, number As Integer)

range(cells).Select
ActiveCell.FormulaR1C1 = number

End Sub

当我这样调用子程序时:

EnterCellValueMonthNumber ("N23:Q23",1)

我收到以下错误消息:

Compile error Expected: =

我不知道为什么会收到此消息。有谁知道我错过了什么?

4

3 回答 3

54

您可以将 sub 称为

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("..."). 同样对于 using .Select,它是不必要的,并且只会给您将来带来问题。

于 2011-06-06T12:57:13.367 回答
4

你实际上有2个问题。

首先是您问题的实际答案。你需要说:

Call EnterCellValueMonthNumber("N23:Q23",1)

但是,如果你运行它,那仍然行不通,因为你已经设置cells了 type range...string使用 this 将其设置为 type :

Sub EnterCellValueMonthNumber(cells As String, number As Integer)
    Range(cells).Select
    ActiveCell.FormulaR1C1 = number
End Sub
于 2011-06-06T13:00:14.860 回答
0

试试下面的代码:

Sub EnterCellValueMonthNumber(ByVal cells As String, number As Integer)

    Range(cells).Select

    ActiveCell.FormulaR1C1 = number

End Sub
于 2015-06-08T10:50:24.247 回答