【エクセル2010】数式バーの幅(高さ)をマクロで自動調整(2) | The Road to EXCELER ~エクセラーへの道~

The Road to EXCELER ~エクセラーへの道~

エクセルの機能を基本から紹介していきます。お仕事で日々エクセルを使っておられる方に読んでいただければ仕事の効率アップ間違い無しです。

石ばし。
The Road to EXCELER ~エクセラーへの道~ 江戸川橋の超老舗です。


普通の民家っぽい、雰囲気タップリのお店。昔は蔵だったんでしょうかね。。

(゚ ▽ ゚ ;)


うなぎのかたさもタレの上品さもGood!でした。

時間のあるときにまたゆっくりと来たいものです。

:*:・( ̄∀ ̄)・:*:


最近めっきり寒くなりましたねぇ~。。

風邪がはやってきているようですのでご注意を!

(*^o^*)

゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚゚・*:.。..。.:*・゚ ゚・*:.。..。.:*・゚

さて、前回までの解説で、セル内改行の数+1 が、A1セルの文字列の行数になるので、


=LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1


という関数式で、A1セルに入力されている文字列の行数が求められる、ということと、


Application.FormulaBarHeight = 5


というコマンドで、マクロによって、数式バーの幅を「5」に広げることができ、この「5」の部分を変数にすれば、広げる幅を自由に調整することができそうなことがわかりましたね。


単純に考えると、


a = LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))+1

Application.FormulaBarHeight = a


という2行のマクロを実行すれば、A1セルの行数に合わせて数式バーの幅が調整されるはずです。


基本はそれでOKですが、ここで知っておかないといけない事項がいくつかあります。


まずは、マクロの中で(VBAで)使われる関数と、エクセルのワークシート上で使われる関数は扱いが異なる、ということです。


ワークシート上で使う関数は、そのままではVBA上では使えません。

VBA上で使う関数が、エクセルのワークシート上でそのまま使えない、というのは感覚的に理解できるように思いますが、まぁそれと同じです。

そしてまたややこしいことに、同じ関数が使える場合であっても、ワークシート上で使う場合とVBA上で使う場合とで機能が異なることもあります。あと、微妙にスペルが違うこともあります。。

(_ _。)


そもそも、VBAはエクセルのためにあったわけではなく、別々に存在していたものをあとからエクセルに取り入れたという経緯があるため、こういうやっかいなことが起こります。

これはちょっとどうしようもないので、使用するときにネットや本で調べることになりますが、ワークシート関数はほとんどの場合、頭に


Application.


を付ければVBA上で使えるようになりますので、使いたい関数がVBA関数として同じように使用できるのかどうかさえわかればそんなに困ることはありません。


ちなみに、今回出てくるLEN関数は、VBA上でそのまま使えますが、SUBSTITUTE関数はワークシート関数なので、マクロで使用するときは、


Application.Substitute ~


として使用することになります。

ちょっとややこしいですね。。

(;^_^A