え~っ、なんで??
先日、頼まれて作ったエクセルのマクロがとんでもない事になってました。
~ 説明だけのつもりが…。 ~
午後から説明をする為に出かけ、いざ説明となった時にマクロの動作に異常が…。物凄く遅い!昨日、作った時は軽快に動いていたのにセル1つにも入力できない。計算結果が入力と同時に反映されるので「あれ?先日足したマクロにループができちゃったかな?」と思ったんだけども動作を確認して終了していたので、そんな事はありえない。
~ 原因不明だが ~
とにかく使用できるように直さなければならないので、2時間ほどで修復を開始。極力いらない動作を削って何とか使える状態にし、使ってもらって「OK」が出たんだけども、その後ちょっとしてから「ここの入力結果をこっちに反映して計算して欲しい。」と要望が・・・。
「できない訳じゃないけども、遅くなるよ?」と言ったんだけども「その辺も何とかかわしてさ。」といとも簡単に言われてしまった。仕方がないので「んじゃ、操作性を一部犠牲にします。」って事で再び1時間ほどかけてリニューアル。
~ 結果的にボタンを使った。 ~
遅い原因は、読み取りするセルの数が多い事なので逐一読み取る動作を減らせば済むので計算結果を求める時にボタンで対応してもらう事にした。通常なら、セルに計算式を入れて行う場合が多いだろうけども、不測の事態に備えてセルに直接入力できるような状態も必要だったので「エクセルで自動で計算させる場合は、ボタンを押し自分で計算した結果を入力して印刷したい場合は、ボタンを押さないようにして使ってね。」と利用者には言ってきました。
~ 新たに発注。 ~
一応、今回のエクセルに関しては終了したのですが「データベースに蓄積するような方法を検討してくれ。」と注文がでました。そうなるとVBAじゃなくてVBで作る事になりそうです。取りあえず、何を組み合わせて作るかを考えなければ…。期限は1ヶ月となりそうなので毎日コツコツと組み合わせて行かなければ…。
使い物になるでしょうかねぇ
知人から電話があり、「アルバイトしない?」って言われたので早速、受けて出かけた。
~ エクセルで提出書類の作成 ~
をするので、フォームとマクロを組んで欲しいとの事でしたので簡単な事と思い気軽に受けたんですけども、第一難関がフォームでした。
提出書類は、フォームを守らないといけないので忠実に再現するのですが、書類の先頭を合わせると最後の方がはみ出してしまい、最後の方から作成すると先頭部分が異常に空白が多くなったりと一向に上手く行きません。こう言う場合は、何度も列幅を変更して丁度良いサイズを探さないならないのですが、初めて列幅0.5と言う数値を使ってしまいました。実は、これでも大きいようで0.2~3程度で合いそうだったんだけども、切の良い数字で0.5にしました。
~ フォームは完成! ~
本物と見分けがつかないくらい(俺も途中で判らなくなった。)まで再現できましたので次は、マクロです。VBAでセル値を読んで金額を計算して別のセルに埋め込むだけなのですが、困った事にセル1つに0~9までの数字が一つだけ入らなければなりません。つまり入力される数字は6個のセルに1の位、10の位・・・、のように入力されるので一旦、VBAで入力された数字から計算できる数字に組み直しして計算後は、再び位ごとに分割して表示させなければならないのです。
~ コードは簡単。 ~
VBAで組み直して、計算後に分割してセルに埋め込む事は簡単なんですけども、その作業をする為のセルの数がとんでもなく多くて、座標を確認しながらの作業には本当に苦労しました。
昨日の時点で動作状況を確認したらちょっと不味い事が顔を出してきました。それは、VBAのコードが複雑で動作が落ちてくる事です。予期してはいたんですけどもね。大体、セルの値を読み込んで書き出すって処理が非常に多くなってきているんで当然なんだけども。
~ 本日は、コードの最適化 ~
まずVBAで作ったマクロを一旦、印刷してみました。自分も気が付かなかったけども20ページにもなってる。その20ページのコードをゆっくりと見直していると同系の処理が繰り返し出てきているのを確認。「あ、ファンクションかサブに飛ばして処理しちゃえば簡単になるじゃねぇか!」って事でダイエット作業を開始したら、7ページまで小さくなった。最初からちゃんと考えて作っていれば、コーディングも簡単だったのに惰性で作っちゃったからなぁ。(どんなに簡単な物でも惰性で作っちゃいけないって事が改めて解りました。)
~ 月曜に初版をテストします。 ~
ま、動くことは確認しているんだけども実務に耐えられる速度が得られるかがポイント。これで駄目なようだと真面目にVBで作るしかなくなります。その場合は、データベースも併用して作ることになりそうなので大掛かりな作業になりそうです。
とうとう壊れた…。
連続してPCに障害が発生するとは…。
10年以上使い続けたノートPCが壊れてしまいました。
~ 液晶が壊れた模様 ~
3年ほど前に修理したのにまた壊れてしまいちょっと怒り気味です。と、言うのも使用時間にしても仕事で使用している訳ではないので液晶の寿命時間には届いていないと思われるからです。多分、ノートPCそのものの不良から来ているものと思われます。
壊れたノートPCは、シャープ製メビウスGP1シリーズ。GP1シリーズは、LANやUSBにも不良を抱えていた機種のようで(幸いにこの現象は少なかった。)ネットで調べるとたくさん出てきます。
~ 液晶修理で7万 ~
こんなにかかるんじゃ、修理はできないなぁ。でも、自分の部屋でしかネットに接続できなくなるってのも困りものだしなぁ。15インチの液晶ディスプレイを買ってきた方が安いかもしれない。そうなるともはやノートPCとは言えなくなるなぁ。