2007年9月15日土曜日

第42回目 エクセルのファイルを分析する(その5:ちょっと寄道)

○第42回目 エクセルのファイルを分析する(その5:ちょっと寄道)

 だいたい出来ていたので、先駆けて、機能アップを考えました。
 それは、シートの目次のシートの内容を基にして、シートをソートすることです。
 目次を見ていると、これを、こうちょっことこのうしろに動かしてみたいな、など、
 シートをこういう風に並べ変えてみたいな、という気が起こります。
 その際、目次のシート一覧を操作して、シートが動いたらいいのではないかと思っって、プログラムを考えてみました。

 すると、いつものようにバグがでてきました。だいぶ時間がかかりました。原因は、変数名にちょっとしたタイプミスがあったのです。見るのは主にロジックであるため、こんなところに間違いがあるとは、思いません。
 いつまでたってもわからないのです。
 結果的に、結構な時間を費やしてしまいました。

 ということで、これを機に変数の定義を必須とすることにしました。
 毎度毎度のことですが、今回はいい機会と思って、その対応をきっちりするようにすることとしました。

 寄道とは、変数の事前宣言に関するものです。
 モジュールの先頭に、変数定義の必須を宣言すればいいのです。
 するとコンパイラがチェックしてくれます。
 そのおまじないは、 Option Explicit と書くことです。
 モジュール上は、一番上から
 Option Explicit
 Sub xxxx()
  :
 となります。

 今回のテーマは、変数の抜き出しを自動化してしまえないかということです。
 プログラムを作った後に、変数を抜き出し、それをもとに変数の定義を作るというものです。

 仕組みを考えてみました。
 Sub文やコメント文は関係ありません。それを削除してしまいます。
 ifとかforとかnextなどは変数ではありません。削除しましょう。
 ということで、削除すべき(ヌルに変換すべき)項目などをきめて、QXエディタの複数変換マクロを動かすのです。
 その後で変数を取り出し、重複をなくして、変数名を取得して、Dim文に付けてるというものです。
 途中で、空行の削除のマクロも使います。

 変換表は、次々に追加していけばいいのです。削除してみて、残っているものをどんどん追加していけばいいのです。原理的にも作業的にも簡単でした。

 これは、QXエディターのマクロとなります。

0 件のコメント: