BizFAQ-ビズファック

仕事・ビジネスにおけるちょっと困ったこと、わからないことをズバリ解決お悩み解決サイトです。

  • TOP
  • 副業解禁時代の年収1000万円戦略
  • Excel
  • Word
  • PowerPoint
  • サイトマップ

VBAのRangeで簡単に範囲指定をする。RangeとCellsの使い分けとは

2015年4月7日 by Gen

VBA_Range_6

VBAのRangeとCellsは基本的には同じ挙動をします。用意されているVBAのメソッドやプロパティもほとんど同じです。しかしRangeとCellsの2つが用意されているのは、Rangeが分かりやすいからです。しかし中級者以上になると不便なところもあり、それはCellsの記事に記載されています。



目次

  • Rangeでセルの取得を実装する
    • 1.Rangeプロパティとは
      • Sub sumple() Range(“C5”).Select MsgBox “次のセル範囲を選択します” Range(“$B$2:$E$5”).Select End Sub ※MsgBoxは見やすいように入れています。
    • 2.Cellsプロパティとの連携
      • Sub sumple() Dim i As Integer For i = 1 To 10 Range(Cells(1, 1), Cells(i, i)).Select MsgBox “選択範囲を広げます” Next i End Sub
    • 3.イミディエイトウィンドウの利用

Rangeでセルの取得を実装する

言葉の問題ですが、VBAでセルの取得。ということはセルに入力されているデータを取得するのではなく、データを含めた表示形式や罫線などのセルに関するすべてのデータを取得するということです。
何やら大変なものだと思いますが、実はそのセルのRangeオブジェクトに全て情報は詰め込まれているのです。

1.Rangeプロパティとは

Rangeプロパティには2種類の使い方があります。それはRange(arg)とRange(Cell1, Cell2)という使い方です。argはVBAではなく、ワークシート関数で使う「A1」といった文字列型で指定します。Range(Cell1, Cell2)と言うのはCell1からCell2までの長方形範囲をVBAのRangeオブジェクトで取得します。

Sub sumple()
Range(“C5”).Select
MsgBox “次のセル範囲を選択します”
Range(“$B$2:$E$5”).Select
End Sub

※MsgBoxは見やすいように入れています。

VBA_Range_1

VBA_Range_2

サンプルコードのように絶対参照を表す、「$」マークはあってもなくても正常に動作します。
直感的で、とても分かりやすいVBAのコードになります。

2.Cellsプロパティとの連携

しかしRangeプロパティはForステートメントとの相性がよくありません。
Forステートメントと相性がいいのはCellsプロパティです。
そんないいとこどりをするのが以下です。

Sub sumple()
Dim i As Integer

For i = 1 To 10
Range(Cells(1, 1), Cells(i, i)).Select
MsgBox “選択範囲を広げます”
Next i
End Sub

MsgBoxを閉じるたびに選択範囲が広がっていくサンプルプログラムです。

VBA_Range_3

VBA_Range_4

もちろんCells(1,1)のところをRange(“A1”)と変えても問題ありません。どちらもA1のRangeオブジェクトを返すからです。

3.イミディエイトウィンドウの利用

イミディエイトウィンドウはとても便利で、その便利な利用法の1つが「選択範囲のセルアドレス取得」です。実は章1で利用した「$B$2:$E$5」もイミディエイトウィンドウで取得したものです。

選択した後、イミディエイトウィンドウで
「Selection.Address」
と打ち込みます。

VBA_Range_5

VBA_Range_6

この様に簡単にセルアドレスを取得することが出来ます。
イミディエイトウィンドウは特別にマクロを書かなくても「一行だけ」マクロを実行できる、とても便利なウィンドウなのです。


今回はRangeプロパティについて解説しました。

後半のイミディエイトウィンドウの利用はとても気に入っているVBAの機能なんです。
実はこのイミディエイトウィンドウのような機能が付いているプログラミング開発ソフトってほとんど無いんです。
イミディエイトウィンドウを使って便利に開発を進めてしまいましょう!

Filed Under: Range Tagged With: Range, vba




© Copyright 2015 BizFAQ · All Rights Reserved · Powered by WordPress · Admin