【 マクロ記録は参考にするだけにしよう 】 | Excelで業務改善や業務システム連携を支援、5時間作業を5分に効率アップ!

Excelで業務改善や業務システム連携を支援、5時間作業を5分に効率アップ!

excelや業務システム連携を業務に合わせて最適化、業務効率改善を実現する、中小企業診断士です。
5時間かかるexcelファイルの集計を5分以内に短縮するノウハウをご提供いたします。ソフトウェアの開発方法論や体系立てたシステム開発経験も合わせて提供いたします。

【 マクロ記録は便利! でも 】


Excelには便利な「マクロ記録」機能があります。

これは、記録ボタンを押してから修了するまでの一連の操作を、プログラムのソースコードで出力してくれるものです。


Excelで業務改善や業務システム連携を支援、5時間作業を5分に効率アップ!


とても便利ですが、注意点もあります。

「あくまでも参考にすること」に徹することが第一だと思うのです。

参考になるところは、下記の2点だと思います。

・どんな関数を使えば良いのかの検討がつくところ
・パラメータがわかるところ


参考以上にしては行けない理由は、

・プログラムのソースコードが必要以上に長くなるケースが多い
・条件分岐や繰り返しなど(if~then や for ~ next )が入らない
・自分のソースコードスタイルと違う
・コメントが入っていない


特に、複雑な操作の記録をコピペで使ってばかりいると、
・記録されたプログラムを解読してから使わなくなる
・コピーしたところを後から見ても、何が書いてあるのかよくわからなくなる
・きちんとしたプログラムのソースコードが書けなくなる

と、初心者に舞い戻ってしまうことになります。



【 マクロ記録の例 】


例えば、レーダーチャートを表示するために、領域を選んでから、
「挿入」-「グラフ」-「レーダーチャート」を記録すると、このようなプログラムとして記録されます。


Sub Macro3()
'
  Range("A4:C9").Select   --- ①
  ActiveSheet.Shapes.AddChart2(317, xlRadar).Select --- ②
  ActiveChart.SetSourceData Source:=Range("Sheet1!$A$4:$C$9") --- ③
End Sub


この例だと、表示対象の領域設定が①、③の2カ所に現れています。

①は、最初にグラフを作るための表示領域の設定。
②は、レーダーチャートグラフを生成する部分。
③は、既に作られているグラフに表示領域を設定しにいく。


①と③とは目的が違います。③を応用すれば、一つのグラフを表示した後に、表示領域を変更するだけで、いろいろなグラフを表示できるようになります。

この時に使うのが、ChartオブジェクトのSetSourceData という関数で、その変数としてExcelシート上のデータが記入されている領域を指定する、と理解しましょう。


単純にグラフを表示するだけなら、①と②でも動作します。