「Excel」VBAを支える優秀な社員Range!

こんばんは、( ノ゚Д゚)こんにちは、おはようございます。おやすみなさい! とっちーです。

本日は、VBAのコードを作成する上でなくてはならないRange!

いったいどんな働き者なのか!楽しくお話したい!と思います。

 

 

 

Rangeというオブジェクト型の変数を理解する。

 

Rangeは、Excelの最小単位セルを操作するためのオブジェクトに当たります。

ちなみにRangeは中間管理職的な存在かもしれません。

ブックやシートの命令を聞いたり、セルに入力された値を指導したりと一番Excelでは必要な存在なのではないでしょうか。

 

その活躍次第では、ブック以上に活躍するのですが、それはさておき。

Rangeは、セルの操作をする上で大変重要な役割を果たすのです。

その中でもRangeの手助けをしてくれるCellという存在があるのですが。

 

Cellsの働きは、Rangeの負担を軽減させる。

 

あれしろこれしろと指示されるRangeですが、仲良きパートナーCellsさんのおかげで今日も元気に過ごせるRangeなのですが、そんなCellのお話をいたします。

例えば、Excelシートのセル番地”A1″の値を知りたいんだよってシート部長に言われたとします。

すると、Range課長はRange(“A1”)って伝えるんです。そこでわがままなシート部長は、他のセル番地の情報を早く知らせろって言うんです。

つまり

Range(”A1”)はこれで、Range(”A2”)はこれで、Range(”A3”)はこれで、Range(”A4”)はこれで、Range(”A5”)はこれでとくどくど言ってたらシート部長は切れますよね、プチって。

そこで影武者Cellの登場なんです。

Cellsは、Rangeと同様にセル番地を認識できるのです。

Range(”A1”)=Cells(1,1)

Range(”A2”)=Cells(2,1)

Range(”A3”)=Cells(3,1)

Range(”A4”)=Cells(4,1)

etc・・・。以後同様な感じで。

?気づかれましたか!

 

そうなんです、Cellsの()内にあるのは数値です。

 

Rangeではアルファベットで認識させていたものがCellsでは数値で認識できるです。

 

それは、つまり計算式が活用できるってことなんです。

 

Rangeの処理をCellsで処理が出来るのか?

 

Rangeでは場所を認識することは出来ても、都度都度確認作業をしなくてはならなかった作業。

Cellsは、おまかせあれ~って名感じで瞬時に作業をしてくれるのです。

 

例えば、A1セルからA10セルの内容を知りたいとき、Rangeでコードを書くと、

Sub d()

MsgBox Range(“A1”)
MsgBox Range(“A2”)
MsgBox Range(“A3”)
MsgBox Range(“A4”)
MsgBox Range(“A5”)

End Sub

と記述していましたが、これをCellにしてみると(Cellsの部下にも手伝ってもらいますが。)

Sub E()
Dim a As Long

For a = 1 To 5

MsgBox Cells(a, 1)

Next a

End Sub

 

となるんです、どうですか短くなったでしょコード。

 

これが数十行~を超えたら想像してみてください。

5の数字を変更するだけで処理が行えるんです。

MsgBox Range(“A**“)を何行も書くことします?※(**は行の値)

 

 

それに、Cellsに任せると優秀なFor~Nextみたいな部下がシャキシャキ動いてくれるんです。

非常に有難いです。

 

大きな仕事へ取り組むまでの 下準備がスムーズに進んでいませんか?

 

そんな優秀なCellsなのですが、実は一つ身代わりが出来ないことがあるんです。

 

それは、セルの複数選択なんですが、

 

Range(“A1:B3,C6:D8”).Selectという、セル位置のつながりのない範囲選択。

 

Range((Cells(1, 1), Cells(3, 2)),(Cells(6, 3), Cells(8, 4))).Selectとは記述できないんです。

ちなみに

Range(Cells(1, 1), Cells(3, 2)).Select
Range(Cells(6, 3), Cells(8, 4)).Select

 

としても、2行目のRange(Cells(6, 3), Cells(8, 4)).Selectのみが優先されます。

 

この時点でRangeにしか出来ないこともあるということが、ご理解いただけたと思います。

 

社員としてのRange!実はリーダー(株主)なんです

 

セルの内容や場所、その他の情報をシートやブックに伝えるためには、やはりRangeの役割は重要です。Cellsと組み合わされているとさらに便利です。お忘れなく。

値の取得、値の引渡しには必ず無くてはならないRangeです。

いくらシートが合ってもブックがいてもRangeが、いなくてはExcelという会社は動きません。

Rangeがお客さん(変数)を大事にできるから、Excelが活躍できるイメージなんとなくつかめましたでしょうか。

 

まとめ

 

最後にRangeはオブジェクトであり、プロパティでもあることを覚えておきましょう。

 

そんな中間管理職のRangeには、元気はつらつでいてもらいたいですね。

 

今日は、VBAで大活躍するRangeの存在感についてお話してみました。

 

VBAでコードを作成するときにRangeさん、ありがとうって思いながら作ってみると、案外うまく出来るかも。

 

 

 

 

スポンサーリンク