【VBA】セルの範囲指定。自分の思い通りの範囲を指定する方法。

momeq

今回は、VBAでセルの範囲を指定する方法を見ていこうと思います。

セルの範囲を細かく指定できれば、できることが増えるんだにゃ。是非是非覚えたいんだにゃ。
この記事では、
- VBAで表の最後のセルまでを範囲指定をする方法
- 少しずらした位置を指定する方法
- 範囲指定でできること
を学びます。
セル範囲を取得する方法
Range()で範囲を指定

指定したいセルの場所がわかっていれば、Range()で指定できます。

Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1:C10").Select
End Sub
カレントリージョン(CurrentRegion)で表を取得

表全体であれば、カレントリージョンの方が細かな指定なくできるので、楽だと思います。

Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1").CurrentRegion.Select
End Sub
ユニオン(Union)で離れたセルを指定

ユニオンを使えば、離れた位置にあるセルも指定できるんだにゃ。

Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
Union(ws.Range("A1"), ws.Range("B2:C4"), ws.Range("A5")).Select
End Sub
少しずらした位置を取得する方法

取得したセルを少しずらせば、好きな位置を取得することもできます。
オフセット(Offset)で全体をずらす

Offsetであれば、すでに取得している位置をずらすことができるにゃ。1行目や1列目をずらしたいときに使うにゃ。でも、はみ出す場合があるのが少しネックだにゃ。

Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
ws.Range("A1").CurrentRegion.Offset(1, 1).Select
End Sub
インターセクト(Intersect)で重なる部分のみにする

Offsetではみ出すのが嫌な場合は、重なり合う部分だけ取得するインターセクト(Intersect)を使うと良いですね。

Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.Range("A1").CurrentRegion
Intersect(.Cells, .Offset(1, 1)).Select
End With
End Sub
リサイズ(Resize)で範囲を変更する

取得した範囲自体の大きさを帰ることもできますね。

Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.Range("A1").CurrentRegion
.Offset(1, 1).Resize(.Rows.Count - 1, .Columns.Count - 1).Select
End With
End Sub
セルの範囲を取得してできること

好きな位置を範囲取得できれば、色々できますが、使いそうなことを例に挙げておきます。
//コピー
Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.Range("A1").CurrentRegion
Intersect(.Cells, .Offset(1, 1)).Copy ws.Range("B12")
End With
End Sub
コピー方法 → 【VBA】コピー&ペーストするには?ペーストを指定すると幅が広がります。
//削除
Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
With ws.Range("A1").CurrentRegion
Intersect(.Cells, .Offset(1, 1)).ClearContents
End With
End Sub
//配列に代入
Sub sample()
Dim ws As Worksheet
Set ws = ActiveSheet
Dim ary As Variant
With ws.Range("A1").CurrentRegion
ary = Intersect(.Cells, .Offset(1, 1))
End With
ws.Range("A12").Resize(UBound(ary, 1), UBound(ary, 2)) = ary
End Sub

ここでは、コピー、削除、配列へ代入のコードを書いて見たにゃ。その他にもセルを選択できるといろいろなことができると思うから、覚えて欲しいんだにゃ。
プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。
TechAcademyのおすすめポイント
- オンラインで選抜された現役エンジニアから学ぶことができる
- 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
- 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている

無料体験や相談もあるから、一度試してみてもいいんだにゃ!
\無料体験、無料相談はこちらから/