【ExcelVBA入門】Range(セル位置)を変数に入れて使いまわす方法!

セルの場所を変数に入れて使いまわしたい。
そんなことありませんか?

私はたまーにあります。

目次

setで入れるのが基本だけど

Dim rng As Range
Set rng = Range(“A1”)

↑こんなコードを見たことありませんか?

これが基本のrangeを使った変数です。

Sub test1()


Dim rng As Range
Set rng = Range("A1")

rng = 1

End Sub

このコードを実行するとA1に1と入ります。
使いやすそうなんて思うじゃないですか。

VBA エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。

Sub test2()


Dim rng As Range
Set rng = Range("A1")

rng = 1

Sheets("Sheet1").rng = 1

End Sub

これエラー出ます。
『VBA エラー 438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。』

なぜかと言えばシートの指定ができないのです。
setで入れた瞬間にアクティブシートのrangeが入っちゃってるので、指定しようがないのです。

使いにくくないですか?

文字として入れるほうがいいんじゃない

Dim rng As String
rng = “A1:A5”
Range(rng) = 1

こんなことできます。

なんか使いやすそうでしょ。(実際使うことはほぼないけど)

Sub test3()

Dim rng As String
rng = "A1:L100"

Range(rng) = 1

End Sub

目いっぱいの1です。

Sub test4()

Dim rng As String
rng = "A1:L100"

Sheets("Sheet1").Range(rng) = 1

End Sub

シートが変わってもOK!

おわり

全シートの○○に△△を入れたい、なんて時に使えるんじゃないですか?

コメント

コメント一覧 (1件)

コメントする

目次