大体でIT
大体でIT
2020/11/25
Excel VBAで、Rangeで取得したセル範囲を、「オブジェクト」として取得する方法するには「Set」を使います。オブジェクトとして取得するというのは、VBAコードに自分の好きな「名前を付ける」というイメージです。「Set」をうまく使って、VBAコードを簡素化してしきましょう。
この記事では、Rangeを使ってセル範囲の「値」を変数に代入する方法と、「オブジェクト」として取得する方法について、ご紹介します。
オブジェクトとして取得したい場合は、「Set」を使います。
オブジェクトとして取得するというのは、VBAコードに自分の好きな「名前を付ける」というイメージです。
オブジェクトとして取得する方法が使えれば、VBAコードをシンプルに記載することができるようになりますので、マスターしておきたいところです。
では、Rangeを使ってセル範囲から「値」を取得する方法と、「オブジェクト」として取得する方法について、解説していきます。
セル範囲の「値」を取得する方法と「オブジェクトとして」取得する方法がわかります
はじめに、ポイントなるVBAコードを記載しておきます。
VBAコードだけ確認したい場合に、ご活用ください。
Dim A
'変数に代入
A = Range("A1:C4")
Range("E1:G4") = A '値をセルに出力
'オブジェクトとして取得
Set A = Range("A1:C4")
Range("E1:G4").Value = A.Value '値を取得
A.Select '範囲を選択
Debug.Print A.Address 'アドレスを取得
セル範囲の値を変数に代入するのは、「Range」を使えばできます。
セル範囲の値を、Rangeを使って、変数に代入してみます。
Sub TEST1()
Dim A
'変数に代入
A = Range("A1:C4")
End Sub
取得するセルの値
変数に代入
Rangeを使えば、セル範囲の値を、簡単に変数に入力することができます。
先ほど取得したセル範囲の値を、セルに出力してみます。
Sub TEST2()
Dim A
'変数に代入
A = Range("A1:C4")
'セルに値を出力
Range("E1:G4") = A
End Sub
セルに出力
変数に入力した、セル範囲の値を、セルへ出力することができました。
Rangeを使えば、簡単にセルの値を取得することができます。
Rangeで取得したセル範囲を、変数ではなく、オブジェクトとして取得することができます。
VBAコードに自分の好きな「名前を付ける」という感じです。
オブジェクトとして取得すれば、値だけでなく、オブジェクトの範囲を選択したり、アドレスを取得したりすることができます。
オブジェクトを使った、具体的なVBAコードを見ると、オブジェクトがイメージがつかめます。
Rangeで取得した範囲を、オブジェクトとして取得するには、「Set」を使います。
Sub TEST3()
Dim A
'オブジェクトとして取得
Set A = Range("A1:C4")
End Sub
これで、変数「A」に「Range("A1:C4")」のオブジェクトを入力できます。
先ほどと同じ範囲を、オブジェクトとして、変数に入力してみます。
オブジェクトとして変数に入力
オブジェクト
なんかごちゃごちゃ書かれていますけど、中身を知る必要はありません。
ただ、これだけでは、意味が分からないと思うので、取得したオブジェクトを使って、VBAコードを作ってみます。
まず、変数「A」に「Range("A1:C4")」をオブジェクトとして取得して、セルに値を出力してみます。
Sub TEST4()
Dim A
'オブジェクトとして取得
Set A = Range("A1:C4")
'セルに値を出力
Range("E1:G4").Value = A.Value
End Sub
①「Range("A1:C4")」をオブジェクトとして取得
②取得したオブジェクトを使って値を出力
セルへ出力
取得したオブジェクトを使って、セルに値を出力できました。
ただ、値をセルに出力するのは、オブジェクトじゃなくてもできるので、次は、オブジェクトの範囲を選択してみます。
Sub TEST5()
Dim A
'オブジェクトとして取得
Set A = Range("A1:C4")
'範囲を選択
A.Select
End Sub
①「Range("A1:C4")」をオブジェクトとして取得
②取得したオブジェクトの範囲を選択
セル範囲を選択する
ちなみに、次のVBAコードだと、セル範囲を選択することができないですよね。
Sub TEST6()
Dim A
'変数に値を代入
A = Range("A1:C4")
A.Select '⇒オブジェクトではないのでエラーとなります
End Sub
オブジェクトが必要となります
変数「A」はオブジェクトではないので、もちろん、セル範囲を選択することはできません。
同じように、取得したオブジェクトから、アドレスも取得することができます。
Sub TEST7()
Dim A
'オブジェクトとして取得
Set A = Range("A1:C4")
'アドレスを取得
Debug.Print A.Address
End Sub
①「Range("A1:C4")」をオブジェクトとして取得
②取得したオブジェクトからアドレスを取得
オブジェクトからアドレスを取得
取得したオブジェクトから、アドレスを取得できました。
セル範囲を、オブジェクトとして取得すれば、そのオブジェクトをいろいろな用途に使えて便利です。
用途は、値の取得や、範囲の選択、アドレスの取得など、さまざまです。
Rangeを使って、値を取得するだけでなく、オブジェクトについても慣れていきましょう。
この記事では、「Range」を使って、セル範囲を「オブジェクト」として取得する方法についてご紹介しました。
オブジェクトとして取得したい場合は、「Set」を使えばできます。
「オブジェクトとして取得する」とは、VBAコードに自分の好きな「名前を付ける」というイメージです。
オブジェクトとして、Rangeの範囲を取得すると、そのオブジェクトから、様々な値を取得するすることができます。
値を取得したり、範囲を選択したり、アドレスを取得したり、などです。
オブジェクトの取得をうまく使って、シンプルなVBAコードにしていきましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。