Excel VBAの使い方/マクロ・VBA

エクセルのマクロ編集(With文の編集ポイント)(3ページ目)

「エクセルのマクロ編集(編集のポイント)」で作成・編集してきたVBAプログラムを完成させます。一緒に作業を進めながら、徐々に読みやすくてわかりやすいプログラムになる過程を体験してみて下さい!

緑川 吉行

執筆者:緑川 吉行

エクセル(Excel)の使い方ガイド


Withステートメントでまとめる

さぁ、最後の仕上げです。ここまで編集してきたプロシージャをじっくり眺めてみましょう。すると、「Range("B2")」と「Range("Z2")」が繰り返し記述されていることに気付きます。


ちなみに、前回の編集作業で、Selectionプロパティを実際のオブジェクト名に置き換えていたおかげで、上図のようなオブジェクト名の繰り返しに気付くことができています。もし、置き換えていなかったら、この時点で、プロシージャ内に「Selectionプロパティ」の記述が残っていて、どのオブジェクトを指しているのか分かりづらくなってしまいます。Selectionプロパティの置き換え作業には、このような意味もあったのです。

話を元に戻しましょう。上図のようなステートメントは、Withステートメントでまとめます。「エクセルのマクロ基本構文と読み方(オブジェクト)」の「Withステートメントの構造とその読み方」でWithステートメントを「Withステートメントを使わない形」に書き換えたものをご覧頂きましたが、今度はその逆の作業を行う、ということです。

手順としては、共通しているキーワードの前に「With」を記述して、「.(ピリオド)」以下を改行し、この行以降に記述されている共通キーワードを削除します。最後に「End With」を記述します。「With」と「End With」の間は、インデントを入れると読みやすくなります。


実行順序を変更する

書き換えたプロシージャの6行目をご覧下さい。「Application」はExcelを返すプロパティ、「CutCopyMode」は切り取りモードやコピーモードの状態を設定するプロパティです。「False」は「切り取りモードやコピーモードを解除した状態」を表すので、このステートメントは「Excelのコピーモードに解除状態を設定する(Excelのコピーモードを解除する)」と読み解けます。


このステートメントは、コピーした内容を貼り付けた時点で、自動的にコピーモードが解除されたことを表していますが、最後に実行しても支障ないので、プロシージャの末尾に移動します。こうすることで、「Range("Z2")」のキーワードに関わるステートメントをWithステートメントで読みやすくまとめることができます。


>次ページで、ここまで行ってきた編集作業についてまとめてみます。
  • 前のページへ
  • 1
  • 2
  • 3
  • 4
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます