雑KiN3-改

ここは自分にとっての過去ログです。すなわち、他人にとっては単なるゴミ。

 先日からEXCELのセルの中の文字が隠れないようにするVBAを組んでいる話を書いた。WindowsAPIを使って文字の幅を取得してというのをやっていたのだが断念した。取得出来る値でセル内での文字の折り返し等を判定してセルの高さを積み上げて行ったのだが、等幅フォントのときは問題無く算出出来るものの、プロポーショナルフォントでは、折り返しの判定が、文字幅から算出するものと、EXCELが行っている物とでは異なっていた。多分、文字の情報で何かしら取得し足りないのだろう。それが何かが判らないので行き詰まってしまった。


 と言うことで手抜きな方法に走った。EXCELには AutoFit というものがある。セルのふちをダブルクリックしたときにセルの幅高さが適切な大きさに広がるという動作をVBAで実現するメソッドだ。これを使ったVBAなら3時間もあればそれなりの物が作れるはず。では、なんでこれを使わなかったかと言うと高さを算出したい行の中に対象外のセルがあって、その中には長い文章が入っているのだな。つまりメモを記入してあったセルなんだが、これは正式の書類として整形するときには不要なセルな訳だ。AutoFit は行単位で働く。必要なセルを選んでそこだけで動作してくれるというものではない。


 これを行うために一時的にシートを追加して、必要なセルだけをコピーし、それに対して AutoFit を適用して高さを求め、その高さを元のシートに反映するようにした。これは1時間程度で出来た。あとは延々と動作確認。一部、細かい所の詰めは残ったが、それは明日だ。しばらく手間取っていた物が粗方解決したので満足して帰宅した。