大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、Rangeで取得したセル範囲を、「オブジェクト」として取得する方法するには「Set」を使います。オブジェクトとして取得するというのは、VBAコードに自分の好きな「名前を付ける」というイメージです。「Set」をうまく使って、VBAコードを簡素化してしきましょう。

はじめに

この記事では、Rangeを使ってセル範囲の「値」を変数に代入する方法と、「オブジェクト」として取得する方法について、ご紹介します。

オブジェクトとして取得したい場合は、「Set」を使います。

オブジェクトとして取得するというのは、VBAコードに自分の好きな「名前を付ける」というイメージです。

オブジェクトとして取得する方法が使えれば、VBAコードをシンプルに記載することができるようになりますので、マスターしておきたいところです。

では、Rangeを使ってセル範囲から「値」を取得する方法と、「オブジェクト」として取得する方法について、解説していきます。

この記事を読むメリット

  • セル範囲の「値」を取得する方法と「オブジェクトとして」取得する方法がわかります

本記事の内容を動画でまとめています

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

はじめに、ポイントなる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 'アドレスを取得

では、解説していきます。

VBAでセル範囲の値を変数に代入

セル範囲の値を変数に代入するのは、「Range」を使えばできます。

Rangeを使って変数に代入

セル範囲の値を、Rangeを使って、変数に代入してみます。

Sub TEST1()
    
    Dim A
    
    '変数に代入
    A = Range("A1:C4")
    
End Sub

取得するセルの値です。

取得するセルの値

取得するセルの値

実行してみます。

変数に代入

セル範囲の値を、Rangeを使って、変数に代入した結果

セル範囲の値を、変数に代入することができました。

Rangeを使えば、セル範囲の値を、簡単に変数に入力することができます。

セルに出力してみる

先ほど取得したセル範囲の値を、セルに出力してみます。

こちらも簡単で、次のようにセルへ出力します。

Sub TEST2()
    
    Dim A
    
    '変数に代入
    A = Range("A1:C4")
    
    'セルに値を出力
    Range("E1:G4") = A
    
End Sub

実行してみます。

セルに出力

配列をセルに出力した結果

変数に入力した、セル範囲の値を、セルへ出力することができました。

Rangeを使えば、簡単にセルの値を取得することができます。

VBAでセル範囲をオブジェクトとして取得

Rangeで取得したセル範囲を、変数ではなく、オブジェクトとして取得することができます。

オブジェクトってなにと思われるかもしれません。

難しくないです。

VBAコードに自分の好きな「名前を付ける」という感じです。

オブジェクトとして取得すれば、値だけでなく、オブジェクトの範囲を選択したり、アドレスを取得したりすることができます。

オブジェクトを使った、具体的なVBAコードを見ると、オブジェクトがイメージがつかめます。

ちょっとやってみます。

Setを使ってオブジェクトとして取得

Rangeで取得した範囲を、オブジェクトとして取得するには、「Set」を使います。

Sub TEST3()
    
    Dim A
    
    'オブジェクトとして取得
    Set A = Range("A1:C4")
    
End Sub

これで、変数「A」に「Range("A1:C4")」のオブジェクトを入力できます。

先ほどと同じ範囲を、オブジェクトとして、変数に入力してみます。

オブジェクトとして変数に入力

オブジェクトとして、変数に入力してみる

もちろん、変数はなんでもいいです。

変数「A」の中身を見てみます。

オブジェクト

オブジェクト変数の中身

なんかごちゃごちゃ書かれていますけど、中身を知る必要はありません。

ただ、これだけでは、意味が分からないと思うので、取得したオブジェクトを使って、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")」をオブジェクトとして取得
  • ②取得したオブジェクトからアドレスを取得

という流れです。

では、実行してみます。

オブジェクトからアドレスを取得

取得したオブジェクトからアドレスを取得した結果

結果は、「"$A$1:$C$4"」となりました。

取得したオブジェクトから、アドレスを取得できました。

セル範囲を、オブジェクトとして取得すれば、そのオブジェクトをいろいろな用途に使えて便利です。

用途は、値の取得や、範囲の選択、アドレスの取得など、さまざまです。

Rangeを使って、値を取得するだけでなく、オブジェクトについても慣れていきましょう。

おわりに

この記事では、「Range」を使って、セル範囲を「オブジェクト」として取得する方法についてご紹介しました。

オブジェクトとして取得したい場合は、「Set」を使えばできます。

「オブジェクトとして取得する」とは、VBAコードに自分の好きな「名前を付ける」というイメージです。

オブジェクトとして、Rangeの範囲を取得すると、そのオブジェクトから、様々な値を取得するすることができます。 

値を取得したり、範囲を選択したり、アドレスを取得したり、などです。

オブジェクトの取得をうまく使って、シンプルなVBAコードにしていきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す