次のサブルーチンを定義しました。
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オブジェクトを予期しており、文字列を提供しています。サブルーチンの署名を次のように変更する必要があります。
_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)
ただし、cells
型のrange
を設定しているので、実行しても動作しません。代わりにこれを使用して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