引数の指定が間違っている、やりたいことを推測すると使用するプロパティが違うのが原因です。
エラーの原因
公式に書いてあることそのまま、という感じではありますが……。
Range プロパティ (Excel) | Microsoft Docs
Worksheet オブジェクトの Range プロパティは以下の引数の組み合わせしか受け取りません。
- 引数が1個のときは、A1 形式のセルのアドレスの文字列(
"A1"
など)を1個
(Range("A1")
, Range("5:5")
など)
- 引数が2個のときは、A1 形式のセルのアドレスの文字列、または任意の
Range
オブジェクトのいずれかを2個(混ぜて指定してもOK)
(Range("A1", "C3")
, Range("A1", Cells.Item(3, 3))
, Range(Cells.Item(1), "C3")
, Range(Cells.Item(1), Cells.Item(3, 3))
など)
そして、質問の~.Range(5, Columns.Count)
の記述では、両方が整数となっています。
整数は文字列に暗黙的に変換できますが、「A1 形式のセルのアドレスの文字列」にはならないため、上記の組み合わせに当てはまりません。
結果として引数が間違っていることになり、Range プロパティが失敗します。
やりたかったであろう事(推測)
やりたかったことは「行、列を番号で指定してセルを取得」だと思われます。
その場合は、Worksheet 全体のセルを示すCells
プロパティからItem
プロパティで行・列を指定します。
vba
1ワークシート.Cells.Item(行番号, 列番号)
Range の既定のメンバーに引数を指定すると、Item
プロパティと同等の動作をするので、以下のように記述しても良いです。
vba
1ワークシート.Cells(行番号, 列番号)
上記を踏まえて該当箇所を修正・質問の記述に合わせて省略されているものを補完すると以下のようになります。
vba
1sumColumn = thisS.Cells.Item(5, ws.Columns.Count).End(xlToLeft).Column
2sumRow = thisS.Cells.Item(ws.Rows.Count, 5).Row
注意
ttyp03 さんの指摘とも被りますが、上記のコードではthisS.Cells.Item(5, ws.Columns.Count)
と、thisS
のセルを参照するのに、列の指定はws
となっています。
質問の記述をそのまま再現すると上記のようになりますが、本来thisS
とws
はどちらかに統一されているべきです。
そのあたりはどちらが正解なのかは、回答者側からは読み取れないため、自身で確認して修正してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。