Excel VBAで同じオブジェクトを省略できるWith文
Excel VBAは、Microsoft Excelで使用できるプログラミング言語です。
Excelをより効率的に使用するためのプログラミング言語です。Excelをもっと便利に使いたい人におすすめのプログラミング言語です。Excel VBAを覚えると、Excelの作業が楽になります
具体的に出来ることは以下のとおりです。
- Excelの操作を自動化
- 独自の機能を作成
- データの分析・処理
- レポートの作成
- フォームの作成
- マクロの作成
このExcel VBAというカテゴリーでは、私が学んだExcel VBAのコツやテクニックを紹介していきます。
今回は、Excel VBAで同じオブジェクトを省略できるWith文について、ご紹介します。
Excel VBAのWith文
同じオブジェクトを省略できるWith文
With文は同じオブジェクトを省略できるため、何度も同じことを書かなくてすみます。そのためコードがスッキリして、コードの修正もしやすくなります。
例えば、以下の表のセルD2の値を1,300にして、それをD5に貼り付けましょう。
Excel VBAで普通のコードを書いたら以下の通りになります。
Range(“D2”).Clear
Range(“D2”).Value = 1300
Range(“D2”).Copy Range(“D5”)
これだとRange(“D2”)をたくさん書かなければなりません。これは非常に面倒です。同じものを多く書いていくと、ミスも起こりやすくなります。
これをWith文を使うと、それが解消します。
With文で書いたコードはこうなります。
With Range(“D2”)
.Clear
.Value = 1300
.Copy Range(“D5”)
End With
With文の記述方法
最初にWithを記述し、半角スペースを空け、Range(“D2”)と書きます。
最後にEnd Withと記述します。
WithとEnd Withの間に書く処理は、Clear、Value、Copyといったプロパティやメソッドを入力すればWith文の完成です。
つまりWith Range(“D2”)と書くことで、Range(“D2”).Clear、Range(“D2”).Value = 1300、Range(“D2”).Copy Range(“D5”)のRange(“D2”)の部分を省略できるわけです。
Excel VBAのWith文の具体例 With文を使って、セルD2の値を1,300にして、それをD5に貼り付ける
では具体例として、例えばセルD2の値を1,300にして、それをD5に貼り付けをWith文を使って書いてみます。
コードは以下のとおりです。
F5キーを押して、実行します。
このようにD2の値が1,500から1,300に変わり、1,300がD5に貼付けされます。
Excel VBAのWith文のメリット 修正が簡単に出来る
With文ですが、コードを省略して書けるメリットがありますが、それ以外にもメリットがあります。
それは修正です。
D2の値ではなくD3で、1,700から1,500に変更し、D9に貼付けを行わなくてはならなくなったとします。
これをWith文を使用しないと、以下のようになります。
Range(“D3”).Clear
Range(“D3”).Value = 1300
Range(“D3”).Copy Range(“D9”)
書き直さなければならなくなります。そうなると入力は面倒で、もしかしたら間違って記述してしまうことも起こり事も考えられます。
Range(“D2”)をRange(“D3”)に、最後にCopy Range(“D5”)をCopy Range(“D9”)に書き直さなければならなく、これらの作業は面倒なので、記述ミスも起こりやすくなります。
これをWith文を使用すれば、以下のようになります。
With Range(“D2”)
.Clear
.Value = 1300
.Copy Range(“D5”)
End With
With Range(“D2”)をWith Range(“D3”)に、Copy Range(“D5”)をCopy Range(“D9”)と、修正が簡単になり、記述ミスが起こりにくくなります。
With文は、シートも省略して書くことが出来ます。
例えば、以下の表のSheet1のセルD2の値を1,300にして、それをD5に貼り付けてみましょう。
コードは以下のようになります。
Sheets(“Sheet1”).Range(“D2”).Clear
Sheets(“Sheet1”).Range(“D2”).Value = 1300
Sheets(“Sheet1”).Range(“D2”).Copy Range(“D5”)
これをWith文を使用すれば、以下のようになります。
With Sheets(“Sheet1”)
.Range(“D2”).Clear
.Range(“D2”).Value = 1300
.Range(“D2”).Copy Range(“D5”)
End With
最初にWithを記述し、半角スペースを空け、Sheets(“Sheet1”)と書きます。
最後にEnd Withと記述します。
WithとEnd Withの間に書く処理は、Sheets(“Sheet1”)を削除すればWith文の完成です。
Excel VBAのWith文の具体例 Sheet1のSheet1のセルD3の値を1,600にして、それをD10に貼り付ける
では実際に、以下の表で、Sheet1のSheet1のセルD3の値を1,600にして、それをD10に貼り付けましょう。
コードは以下のとおりです。
F5キーを押して、実行します。
このようにD2の値が1,700から1,600に変わり、1,600がD10に貼付けされます。