*当ブログではアフェリエイト広告を利用しています。

VBA

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

momeq
モー
モー

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

ニャー
ニャー

セルの範囲を細かく指定できれば、できることが増えるんだにゃ。是非是非覚えたいんだにゃ。

この記事では、

  • VBAで表の最後のセルまでを範囲指定をする方法
  • 少しずらした位置を指定する方法
  • 範囲指定でできること

を学びます。

【GAS】セル範囲を思い通りに取得する方法!

セル範囲を取得する方法

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
ニャー
ニャー

ここでは、コピー、削除、配列へ代入のコードを書いて見たにゃ。その他にもセルを選択できるといろいろなことができると思うから、覚えて欲しいんだにゃ。

【GAS】セル範囲を思い通りに取得する方法!

プログラミングを学ぶならTechAcademy(テックアカデミー)がおすすめ!

TechAcademy [テックアカデミー]

モー
モー

独学で苦戦している人は、一度しっかりと基礎を学ぶと次のステップへ進めますよ。今のおすすめは、TechAcademy(テックアカデミー)ですね。

TechAcademyのおすすめポイント
  • オンラインで選抜された現役エンジニアから学ぶことができる
  • 自宅からWeb制作・プログラミング・アプリ開発など幅広い分野を学べる
  • 学ぶだけではなく、転職の支援、副業に活かせるスキルの習得、副業の仕事紹介まで行っている
ニャー
ニャー

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

\無料体験、無料相談はこちらから/



記事URLをコピーしました