こんばんは、( ノ゚Д゚)こんにちは、おはようございます。おやすみなさい! とっちーです。
本日は、VBAのコードを作成する上でなくてはならないRange!
いったいどんな働き者なのか!楽しくお話したい!と思います。
Contents
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さん、ありがとうって思いながら作ってみると、案外うまく出来るかも。