このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

【VBA】With文の使い方を解説(Withステートメント)

2024年4月11日

今回はWith文の使い方を紹介します。(Withステートメント)

VBAのWith文は、オブジェクトに対してメソッドやプロパティをまとめて使用するために使います。

With文を使うメリットは主に次の2つがあります。

  • コードが見やすくすっきりする
  • 実行速度を向上

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

With文の使い方

With オブジェクト
    .メソッド
    .プロパティ
End With
'具体例
With ActiveSheet
    .Range("A1").Value = 1
    .Range("A2").Value = 2
    .Range("A3").Value = 3
End With

With文の使い方は↑のようになります。

With文のあとにオブジェクトを記載します。

すると、With文の中ではオブジェクトを省略して、ピリオドを記載するだけでメソッドやプロパティを使うことができます。

With文を使うメリット

With文を使うメリットをWithなし、Withありのコードを比べて紹介します。

With文なしのコード

Sub With文なし()
    
    ActiveSheet.Range("A1").Value = 1
    ActiveSheet.Range("A2").Value = 2
    ActiveSheet.Range("A3").Value = 3
    ActiveSheet.Range("A4").Value = 4
    ActiveSheet.Range("A5").Value = 5
End Sub

サンプルコードはアクティブシートに対して5つの値を入力するコードになります。

With文ありのコード

Sub With文あり()
    
    With ActiveSheet
        .Range("A1").Value = 1
        .Range("A2").Value = 2
        .Range("A3").Value = 3
        .Range("A4").Value = 4
        .Range("A5").Value = 5
    End With
End Sub

このコードはWith文なしのコードを、動作そのままにWith文ありに変更しています。

With文の1つ目のメリットはオブジェクトを何度も書かなくて済むことです。コードが見やすくすっきりします。

もう1つのメリットは実行速度の向上です。

With文なしのコードでは何度もActiveSheetオブジェクトにアクセスしています。何度もアクセスすると少しずつですが実行時間が長くなっていきます。

それに対してWith文ありのコードではActiveSheetオブジェクトにアクセスするのは最初の1回だけになります。

サンプルコード程度なら大して変わりませんが、Forループなどが絡むときはWith文による高速化を試してみてください。

VBAが難しいと感じたら
VBAのプロに代わりに作ってもらうのはいかがでしょうか?
ココナラでVBAの作成請負を受け付けています。お気軽にご相談ください。

VBA

Posted by やろまい