【VBA】Withステートメントを使おう!【Excel】

Excel_VBA

みなさんこんにちは、現役エンジニアのサメハックです

未経験からWebエンジニアに転職し、
現在正社員として5年働いたのちフリーランスとして独立しました。

1分で理解できるVBA講座シリーズです。

今回はWithステートメントを使う方法について学んでいきましょう!

駆け出しエンジニアや未経験の方、
また新入社員を指導する先輩社員にとっても
わかりやすいように解説していきます!

この記事を読むと・・・
  • 1分でWithステートメントを理解しよう
1分で理解できるVBA講座シリーズはじめっ!

初期設定

マクロを有効にする

Excelファイルを開き、
ファイル→オプション→トラストセンター→トラストセンターの設定→マクロの設定
という順に進み、
VBAが有効な場合にExcel4.0のマクロを有効にする
という項目にチェックを入れてください。

VBEの起動

Excelファイルを開いた状態でAlt+F11を押してVBEを開いてください

モジュールの作成

挿入→標準モジュール
という順に操作すると自動的にモジュールが開くので、ここにコードを記述します。

Withステートメント

Withステートメントとは、繰り返し使用するオブジェクトの
記述を省略するステートメントです。

With~End Withの構文

With オブジェクト
    .〜〜〜〜
End With

このように、Withで指定したオブジェクトを
“.”で表現することが出来ます。

実際に動かしてみよう!

Sub with構文()
    'ブックとシートを指定
    With Workbooks("with構文.xlsm").Sheets("Sheet1")
        .Range("B3") = "テスト"
    End With
End Sub

これを実行すると、
with構文.xlsmのSheet1のB3セルに”テスト”
が設定されます。

“.”で省略できるのはWith~End Withのスコープ内だけだよ!

ネストありを動かしてみよう!

Sub ネスト()
    'ブックを指定
    With Workbooks("with構文.xlsm")
        'シートを指定
        With .Sheets("Sheet1")
            .Range("B3") = "テスト"
        End With
    End With
End Sub

このようにネスト形式にしても同様の結果が得られます。

省略されたオブジェクトはスコープによって変わるよ!

まとめ

  • Withステートメントを使うと、オブジェクトを省略して記述できる
  • 省略されたオブジェクトはスコープによって変わる

満足いただけたら、1クリックなのでSNSフォローしてもらえると嬉しいです🦈

タイトルとURLをコピーしました