質問: excel vbaで文字列の可視長を得るにはどうしたよいでしょうか? 一般的にプログラミングで文字列長というと、文字数やバイト数を意味しますが、今回の質問は、文字列が表示時または印刷時に占める長さを何とか入手できないだろうかとの質問です。 バックグラウンドとしては、あるセルに長さが分からない文字列が入るときに、それが印刷時に紙面上の印刷範囲あるいは想定している印刷位置に収まるかどうかを確認したいのです。 お知恵を拝借できれば幸です。よろしくお願いします。
回答: ちょっと時間がかかりますが、どの行ではみ出したか調べるには 次のようにします。 function はみ出し行() dim x&, y&, c& redim g&(0) c = -1 x = workseets(n).cells.specialcells(xlcelltypelastcell).row for y = 1 to x workseets(n).pagesetup.printarea = "$" & cstr(y) & ":$" & cstr(y) if workseets(n).vpagebreaks.count > 0 then c = c + 1 redim preserve g(c) g(c) = y end if next if c >= 0 then はみ出し行 = g end function はみ出しのあった行番号の配列、またはempty(はみ出し行がない)が 返ります。 もしかしたら、もっと上手い方法があるかも知れないけど、今は 分からないので、泥臭いけど、1行ずつ確かめています。