大体でIT

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

大体でIT

Excel VBAで、Rangeで取得したセル範囲を、変数に代入する方法と、オブジェクトとして取得する方法について、ご紹介します。セル範囲を変数に代入する方法は、便利で、よく使われます。オブジェクトとして取得する方法は、うまく使えると、VBAコードをシンプルに、記載することができるようになります。

はじめに

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

Rangeで取得したセル範囲を変数に代入は、よく使われるものです。

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

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

この記事で紹介すること

  • セル範囲から値を取得する
  • セル範囲をオブジェクトとして取得する

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

目次

ポイントとなるVBAコード

はじめに、ポイントなるVBAコードを記載しておきます。

VBAコードだけ確認したい場合に、ご活用ください。

'値を取得
a = Range("A1:C4").Value
Range("E1:G4") = a '値をセルに出力

'オブジェクトとして取得
Set a = Range("A1:C4")
Range("E1:G4").Value = a.Value '値を取得
a.Select '範囲を選択
b = a.Address 'アドレスを取得

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

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

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

Rangeを使って変数に代入

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

Sub TEST1()
    
    'セル範囲の値を取得
    a = Range("A1:C4").Value
    
End Sub

取得するセルの値です。

取得するセルの値

取得するセルの値

実行してみます。

変数に代入

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

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

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

セルに出力してみる

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

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

Sub TEST2()
    
    'セル範囲の値を取得
    a = Range("A1:C4").Value
    
    'セルに値を出力
    Range("E1:G4").Value = a
    
End Sub

実行してみます。

セルに出力

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

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

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

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

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

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

難しくないです。

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

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

ちょっとやってみます。

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

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

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

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

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

変数『a』の中身を見てみます。

オブジェクト

オブジェクト変数の中身

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

ただ、これだけでは、意味が分からないと思うので、取得したオブジェクトを使って、VBAコードを作ってみます。

セルに値を出力してみる

まず、変数『a』に『Range("A1:C4")』をオブジェクトとして取得して、セルに値を出力してみます。

Sub TEST4()
    
    'オブジェクトとして取得
    Set a = Range("A1:C4")
    
    'セルに値を出力
    Range("E1:G4").Value = a.Value
    
End Sub

流れは、

  • ①『Range("A1:C4")』をオブジェクトとして取得
  • ②取得したオブジェクトを使って値を出力

というような感じです。

実行してみます。

セルへ出力

取得したオブジェクトを使ってセルに値を出力した結果

取得したオブジェクトを使って、セルに値を出力できました。

ただ、値をセルに出力するのは、オブジェクトじゃなくてもできるので、次は、オブジェクトの範囲を選択してみます。

取得したオブジェクトの範囲を選択してみる

取得したオブジェクトの範囲を選択してみます。

Sub TEST5()
    
    'オブジェクトとして取得
    Set a = Range("A1:C4")
    
    '範囲を選択
    a.Select
    
End Sub

手順は、

  • ①『Range("A1:C4")』をオブジェクトとして取得
  • ②取得したオブジェクトの範囲を選択

というコードです。

実行してみます。

セル範囲を選択する

取得したオブジェクトの範囲を選択した結果

取得したオブジェクトの範囲を、選択できました。

これがオブジェクトです。

何となくイメージがつかめたかと思います。

値と何が違うのって感じですかね。

ちなみに、次のVBAコードだと、セル範囲を選択することができないですよね。

Sub TEST6()
    
    a = Range("A1:C4")
    
    a.Select '⇒オブジェクトではないのでエラーとなります
    
End Sub

実行してみます。

オブジェクトが必要となります

オブジェクトを使わないでセル範囲を選択した場合

結果は、エラーとなりました。

変数『a』はオブジェクトではないので、もちろん、セル範囲を選択することはできません。

取得したオブジェクトのアドレスを取得

同じように、取得したオブジェクトから、アドレスも取得することができます。

Sub TEST7()
    
    'オブジェクトとして取得
    Set a = Range("A1:C4")
    
    'アドレスを取得
    b = a.Address
    
    MsgBox b
    
End Sub

流れは、

  • ①『Range("A1:C4")』をオブジェクトとして取得
  • ②取得したオブジェクトからアドレスを取得

という流れです。

では、実行してみます。

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

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

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

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

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

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

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

おわりに

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

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

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

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

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

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

関連する記事から探す

カテゴリから探す

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

アーカイブから探す