【エクセルVBA入門】Withでプログラムをスッキリわかりやすく書く

★気に入ったらシェアをお願いします!


みなさん、こんにちは!
週末はVBAの記事を書くタカハシ(@ntakahashi0505)です。

さて今回はエクセルVBAを使ってバラバラの経費精算書のデータをデータベースに集約するの第3回です。

前回はこちらの記事で

【エクセルVBA入門】Do While~Loopで条件を満たす間繰り返し
エクセルVBAを使ってバラバラの経費精算書のデータを集約するシリーズの第2回です。今回はDo While~Loopを使って条件を満たす間、任意の処理を繰り返すプログラムの書き方をマスターしていきます。

Do While~Loopを使って「経費精算書」シートにに記載されたすべてのデータを「経費データ」シートに転記をすることができました。

今回はWithというステートメントを使って、プログラムをスッキリ書く方法をお伝えします。

スポンサーリンク

前回のおさらい

前回のプログラムはこちらです。「経費精算書」シートから「経費データ」シートにそれぞれ該当するカラムに値を転記していくプログラムです。

何か気づくことありませんか?

確かにちゃんと動くは動くんですが、ワークシート名を何回も何回も何回も何回も書かなくちゃいけなくて、ダルくありませんか?

特にワークシートを取り扱うときは、何度もオブジェクト名を書かなくてはいけないときが多くて面倒なことが多いのです。

Withはそんなときに使います。

Withでオブジェクト名を省略する

構文ですが

With オブジェクト名

(プログラム)

End With

と書きます。

End Withまでで挟んだ区間のプログラムは、指定したオブジェクト名を省略して記述することができるようになります。

今回の場合、省略したいオブジェクトは「wsExpenses」ですので、Withの構文は

と書けばOKです。

Withによる省略した書き方

どのように省略して書けるようになるかと言いますと、例えば

というプログラムをWithで挟みますと

と書くことができます。

つまりオブジェクト名を省略して、その後のドット「.」から記述すればOKになります。

まとめ

プログラム全体についてWithを使用して記述すると

となります。

Withを使って少しスッキリ、わかりやすくなりましたね。

ワークシート間のデータ転記の場合はかなり使う機会があると思います。

また、プログラムの容量も少しお得できますので、使えそうな箇所があれば積極的に活用を頂ければと思います。

wsDataも省略したい気分になりますが、それは二つ同時はごめんなさい…無理です。

さて、次回は以下の記事です。経費精算書ファイルを直接開いて操作します。

【エクセルVBA入門】他のワークブックをWithで開く&保存せずに閉じる
エクセルVBAを使ってバラバラの経費精算書のデータをデータベースに集約するシリーズの第4回。今回はWithを使って他のワークブックを開く方法、またそれを保存せずに閉じる方法についてお伝えしていきます。

どうぞお楽しみに!

連載目次:経費精算書のデータをデータベースに集約する

  1. 【エクセルVBA入門】バラバラの経費精算書をデータにまとめる
  2. 【エクセルVBA入門】Do While~Loopで条件を満たす間繰り返し
  3. 【エクセルVBA入門】Withでプログラムをスッキリわかりやすく書く
  4. 【エクセルVBA入門】他のワークブックをWithで開く&保存せずに閉じる
  5. 【エクセルVBA入門】For Each~Nextでフォルダ内のブック全てを参照する
  6. 【エクセルVBA入門】人為的なミスを回避する方法その1~ファイル名を活用する
  7. 【エクセルVBA入門】人為的なミスを回避する方法その2~マスタを利用
  8. 【エクセルVBA入門】データの重複を防ぐSubプロシージャの作成