[英]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.