マクロの記録に限界を感じ始めたら

いち会社員が、プログラミングで最初に覚えるべき言語はVBAなのではないか
にて、Excel/VBAを始める利点をご案内しました。

その中で、「マクロの記録」から始めていただくことをオススメいたしましたが、
やはり、実際の記述をしないと、問題が出てくる場合があります。

今回は、その点について書いていこうと思います。

1.マクロの記録の弱点

マクロの記録は、非常に便利な機能ですが、記録した処理を忠実に記録するため、
それだけでは汎用用途には適しません。

  • 不要な処理も記録してしまう。

    マクロの記述を始めた最初の頃は、実施したい処理をどのように記述するかわからず、
    記録したマクロを継ぎ接ぎして完成させることもあるかと思います。
    その際に気づくのですが、「マクロの記録」は、不要な処理も記録します。
    例えば、画面のスクロールです。
    〜〜〜ここから〜〜〜
    ActiveWindow.LargeScroll Down:=1
    〜〜〜ここまで〜〜〜
    100%とは言えませんが、処理上スクロールが必要な作業はありませんよね。
    ですが、忠実な記録は、このような画面スクロールも、しっかり記録します。
  • データ量が減ったり増えたりしても対応できない。

    全く同じ作業を実施する場合は問題ないのですが、
    • データ量が増えた場合
      └例えば、5レコードの処理を記録した場合、データが増えても、5レコードしか処理しません。
    • データ量が減った場合
      └これはあまり問題無いかもしれません。
       ただし、5レコードの処理を記録した場合、データが減っても、5レコードの処理を行うため、
       不要なレコードに処理をされてしまい、データがおかしくなってしまうという危険性はあります。
このように、少々弱点を持った「マクロの記録」ですが、
記述方法がわからない場合等にも、役に立つ機能ですので、上手く付き合っていく必要があります。
そこで、まずは、不要な箇所の見つけ方をご案内しようと思います。


2.ステップインで、不要な箇所を見つける

前項にて、マクロの記録によって、不要な処理まで記述されてしまうことに触れました。
では、その不要な箇所を、どのように見つけていけばいいのでしょうか。
慣れた方であれば、見ただけで分かりますが、初心者にとっては、書いてあることが何を意味しているのか、
それが必要なのか不要なのかを、見分けるのは困難です。

そこで、「ステップイン」という機能を使いましょう。

ステップインとは、記述されているマクロを、一行ずつ実施してくれる機能です。

〜〜ここから〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

Sub Macro1()
'
' Macro1 Macro
'

    Range("A1").Select
    Selection.Copy
    Range("B1").Select
    ActiveSheet.Paste
End Sub

〜〜ここまで〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

こちらは、前回記録したマクロですが、これを実行すると、一瞬で最後まで実施されます。
そのスピードが、何よりプログラミングの魅力でもありますが、それでは、いつなにが起きたのか一切分かりません。

そこで、一行ずつ実施してくれる、「ステップイン」を使いましょう。
Winの場合、F8
Macの場合、command + shift + I
によって、ステップインが可能です。

ステップインを実行すると、以下の通り、次に実施される行が黄色くハイライトされます。















この状態で、再度上記コマンドを押下すると、
画面上の”Range("A1").Select”が実行されて、表示されているシートの、A1セルが選択されます。
これを続けていくことで、一行一行の処理が確認できるため、
「実際の作業上必要な処理」と。「処理上不要な記述部分」を見分けることができます。

このように、一行ずつ処理を確認していくことにより、不要な箇所を見つけられるので、
その部分を削除していけばいいわけです。

この機能は、それだけではなく、

  • 記録した処理が、どのような記述になっているかの学習
  • エラー発生時に、どこが誤っているかの確認
等にも使えます。


3.まとめ

マクロの記録は、非常に便利な機能です。
この記録だけで作られた、ツールを数多く見てきました。それだけ優秀かつ、即戦力な機能なのです。

私自身も、最初の頃は、この記録を駆使して、あらゆるツールを作ってきました。
その中で学んだ弱点や、その解決方法を踏まえながら、これからも記事を作成していこうと思います。

余談ですが、上記記述に見られる
' Macro1 Macro
の部分は、「コメント」と言います。
プログラミング言語には、このように、実際の処理に影響をしないコメントを残すことができます。
Excel/VBAの場合は、文頭に「’」を付けることで、コメントと定義することが可能です。
※コメントの方法は、言語によって違います。
マクロ自体が長くなると、どので何の処理をしているか、他の方に説明したり、
引継ぎしたりする際に、非常に面倒になりますので、要所要所でコメントを入れておくと、後々楽になります。

〜〜ここから〜〜〜

’A1セルを選択する
Range("A1").Select

〜〜ここまで〜〜〜

こんな感じですね。


それではまた

コメント