繁体   English   中英

excel vba 调用带有变量的子程序

[英]excel vba call subroutine with variables

我定义了以下子程序:

Sub EnterCellValueMonthNumber(cells As range, number As Integer)

range(cells).Select
ActiveCell.FormulaR1C1 = number

End Sub

当我这样调用子程序时:

EnterCellValueMonthNumber ("N23:Q23",1)

我收到以下错误消息:

Compile error Expected: =

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

您可以将 sub 称为

EnterCellValueMonthNumber "N23:Q23", 1

没有括号。 或者

Call EnterCellValueMonthNumber("N23:Q23", 1)

括号,并在它之前Call

此外,您的 Sub 期望 Range object 作为第一个参数,并且您提供了一个字符串; 您应该将 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 ,它是不必要的,并且只会在将来给您带来问题。

你实际上有2个问题。

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

Call EnterCellValueMonthNumber("N23:Q23",1)

但是,如果你运行它,那仍然行不通,因为你已经设置了range类型的cells ......使用它来将它设置为类型string

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM