簡體   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