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

VBA

【VBA】Withステートメントの使い方

VBAのWithステートメント
momeq
モー
モー

今回はVBAで使える便利なWithステートメントについて見ていきます。Withは使わなくともプログラムはかけますが、より簡潔で読みやすいスマートなコードを書くためには必須ですので、ぜひ活用してください。

VBAを使用していると、同じオブジェクトに対して複数の操作を行うことが頻繁にあります。

たとえば、Excelのワークシートにある特定のセルに対して、値を設定したり、フォントを変更したり、色を設定したりといった一連の操作を行うことがあります。

しかし、それぞれの操作で毎回オブジェクトのフルパスを指定すると、コードが冗長で読みにくくなります。

そこで役立つのが With ステートメントです。

このステートメントを使うと、一つのオブジェクトに対する複数の操作を一つのブロックにまとめることができ、コードがよりスッキリと整理され、読みやすくなります。

今回のブログでは、この With ステートメントの基本的な使い方と、それを利用した具体的な例について解説していきます。是非、最後まで読んで、With ステートメントの使い方をマスターし、より賢いコーディングを実現しましょう!

With ステートメントとは何か?

Visual Basic for Applications (VBA) で利用できる With ステートメントは、一つのオブジェクトに対して複数の操作を行うときに、そのオブジェクトを繰り返し参照する必要を省くための構造を提供してくれて、一連の命令をグループ化し、それら全てが同一のオブジェクトに対して適用されることを保証してくれます。

With ステートメントの基本的な構文は次のようになります。

With object
    .property1 = value1
    .method1
    .property2 = value2
End With

ここで objectWith ステートメントの対象となるオブジェクトを指します。

そして WithEnd With の間に記述される .property.method は、その object に対するプロパティやメソッドを示します。

このステートメントを使用することで、各プロパティやメソッドの呼び出しにおいてオブジェクト名を繰り返す必要がなくなります。

これによりコードは整理され、読みやすくなり、さらに誤字や打ち間違いの可能性も減少します。

例えば、ある Excel ワークシートの特定のセルに対して一連の操作を行う場合、With ステートメントを使用することで以下のようにコードを簡略化できます。

With Worksheets("Sheet1").Range("A1")
    .Value = "Hello, World!"
    .Font.Bold = True
    .Interior.Color = RGB(255, 0, 0)
End With

このコードは、シート1のセルA1に対して以下の操作を行います:

  1. セルの値を “Hello, World!” に設定します。
  2. フォントを太字にします。
  3. セルの内部色を赤にします。

With ステートメントを使わない場合、各行で全体のオブジェクト参照を繰り返さなければなりません。しかし、With ステートメントはコードをシンプルに保つことができます。

ただし、With ステートメントを適切に使用することが重要です。その範囲が長すぎると、コードの読みやすさを低下させる可能性があります。

また、多重の With ステートメント(With ステートメントの中に別の With ステートメントがある場合)も注意深く使用する必要があります。それらはコードの複雑さを増加させ、エラーの原因となる可能性があります。

With ステートメントの具体的な例

With ステートメントの具体的な使用例についてもう少し詳しく説明しておきます。

エクセルシートのセルに対する操作

まず最初に、Excelのワークシートにある特定のセルに対して一連の操作を行う例を見てみましょう。

With Worksheets("Sheet1").Range("A1")
    .Value = "Hello, World!"
    .Font.Name = "Arial"
    .Font.Size = 12
    .Font.Bold = True
    .Interior.Color = RGB(255, 0, 0)
    .Borders.LineStyle = xlContinuous
End With

この例では、シート “Sheet1” のセル “A1” に対して、テキストの設定、フォント名とサイズの指定、太字の適用、背景色の変更、セルの境界線のスタイル設定という一連の操作を行っています。

フォームコントロールのプロパティ設定

次に、UserFormにあるコントロール(例えば、TextBox)のプロパティを一括で設定する例を見てみましょう。

With UserForm1.TextBox1
    .Height = 20
    .Width = 100
    .Top = 10
    .Left = 10
    .Font.Name = "Arial"
    .Font.Size = 10
End With

この例では、UserForm1のTextBox1に対して、高さ、幅、上辺と左辺からの位置、フォント名とサイズという一連のプロパティを設定しています。

ワークシートのプロパティ設定

最後に、ワークシート全体のプロパティを一括で設定する例を見てみましょう。

With Worksheets("Sheet1")
    .Cells.Font.Name = "Arial"
    .Cells.Font.Size = 10
    .Cells.HorizontalAlignment = xlCenter
    .PageSetup.Orientation = xlLandscape
End With

この例では、シート “Sheet1” に対して、全セルのフォント名とサイズ、セルの水平方向の配置、ページの印刷設定(ページの向き)という一連のプロパティを設定しています。

まとめ

ここまでWith ステートメントについて見てきました。他言語を触ったことがある人でもWithはVBA独特の概念のため、少し混乱する人もいるかもしれません。

With ステートメントを使用することで、同じオブジェクトに対する一連の操作をまとめて行え、コードがすっきりし、読みやすくなります。

また、タイプミスを減らすこともできます。

VBAの With ステートメントは、あるオブジェクトに対する一連の操作をまとめて行うことを可能にします。

ただし、With ステートメントの使い過ぎはコードの読みづらさを招くことがあるので、適切に使用することが大切です。

モー
モー

VBAを体系的に学びたい場合、本で学ぶことをお勧めしています。

kindle unlimited(キンドルアンリミテッド)であれば、いくつかのVBA関係の本を無料で読むこともできますよ。

Kindle Unlimited

記事URLをコピーしました