Excel VBAでセルの値を取得する方法|Range関数とCells関数の使い方

Excel VBAでセルの値を取得する方法 VBA/マクロ
この記事は約3分で読めます。

Excel VBAでセルの値を取得する方法を紹介します。
Range関数またはCells関数を使うとセルの値を取得できるので、この2つの関数の使い方を説明します。

この記事でわかること
  • Excel VBAでセルの値を取得する方法がわかる
  • セルの値を取得できるRange関数とCells関数の使い方がわかる

Excel VBAでセルの値を取得する方法① Range関数

Excelシートのセルの値を取得する方法の1つ目は、Range関数を使う方法です。
例えば、C1に書かれているテキストを取得し、メッセージボックスで表示する関数を作るとします。
そのサンプルコードはこんな風になります。

Sub セルの値を取得する()
 Dim C1_Text As String   'セルから取得した文字列を格納する変数

 C1_Text = Range("C1").Value   'セルC1の値を取得して変数へ代入する
 MsgBox (C1_Text)  'メッセージボックスを使って取得した文字列を表示する
End Sub

4行目の「Range(“C1”).Value」がC1セルからテキストを取得するコードです。
Range関数の引数に取得したセル番地を入力し、.Valueを続けるだけでデータを取得できます。

おじたか
おじたか

セルの番地をダブルクオーテーション(“)で囲むのを忘れないでください!

Excel VBAでセルの値を取得する方法② Cells関数

セルの値を取得する方法にはもう1つあります。
それがCells関数を使う方法です。
先ほどと同じ例でサンプルコードを書きました。
ただし、さっきと違って4行目がRange関数からCells関数に置き換わっています。

Sub セルの値を取得する()
 Dim C1_Text As String   'セルから取得した文字列を格納する変数

 C1_Text = Cells(1, 3).Value   'セルC1の値を取得して変数へ代入する
 MsgBox (C1_Text)  'メッセージボックスを使って取得した文字列を表示する
End Sub
おじたか
おじたか

Cells関数の引数は2つあります。行インデックス(行番号)と列インデックス(列番号)の順番なのですが、いつもどっちが先だったっけ??って迷うんですよね。

あと、Rowって行だっけ?列だっけ?っていうのもわからなくなります。。。

Cells関数 引数の順番

Cells([行(=Row)インデックス], [列(=Column)インデックス])

Cells関数の引数は、行が1番目! 列は2番目!

Range関数とCells関数の違い

セルの値を取得するのにRange関数とCells関数の2つが使えるのはわかった。
じゃあ、どっちを使えばいいんだ??って疑問に思うのではないでしょうか。

結論から言えば、どっちでもいいのです。
値を取得したセル番地をA1、B1みたいに文字列で指定できるならRange関数を使えばいいし、取得するセル番地を動的に変えたいからCells関数の方が都合いいという場合もあるでしょう。
使う場面で使いやすい関数を使えばいいと思います。

Range関数とCells関数の主な違いをまとめておきます。

機能Range関数Cells関数
セル番地を文字列で指定できる×
指定するセル番地を動的に変える
セルを範囲で指定する×
シート全体を指定する×
定義した「名前」でセルの範囲を指定できる×
【凡例】○:できる、△:できるがやりにくい、×:できない

まとめ

最後にこの記事で説明したことをまとめておきます。

この記事のまとめ
  • Excel VBAではRange関数かCells関数のどちらかを使ってセルの値を取得できる
  • Range関数とCells関数は、それぞれの特長をふまえて、より適切な関数を選択するとよい

コメント

タイトルとURLをコピーしました