vba裏技、技、論理 - 罫線

「vba」でエクセルのプログラムを構築する場合もユーザーが使いやすいようにしなければならない。

またできた表が美しく、見やすくすることも忘れてはならない。プロが構築したプログラムが使いづらいという苦情をよく耳にする。そんなことを避けるためにも罫線の設定は特に重要だ。

それと同時にプログラムを組み方に取ってもできるだけシンプルに時間が掛からないということも重要なことだ。解説書も沢山出版されているし、ネットでも組み方の手法が解説されているが、やたら複雑で必要がないことが書いてあって分かり難いっことも多い。

罫線には「Linestyle」と「weight」の指定ができるが大体は「weight」だけで用が足りる。ここでは「weight」を設定することを中心に解説する。大体洋画足りる。

ます罫線を設定する場所(cells, range, selection)など場所を確定する。その場所に種々の罫線を引く方法は下記の通りである。表を分かりやすく綺麗に見せるには回りやタイトルの下の罫線は「thin」(細)にするが、その他は「hairline」(極細)にするのがいい。

selection.borderaround weight:=xlthin   回りの罫線を細に設定する。

selection.borders.weight=xlhairline    全ての罫線を極細にする

selection.borders.linestyle.weight=xlnone  全ての罫線を消す(ここではlinestyleとしなければならない

selection.borders(xledgeleft).weight=xlthin   左端を細にする

selection.borders(xledgeright).weight=xlthin  右側を細にする

selection.borders(xledgebottom).weight=xlthin 下端を細にする

selection.borders(xledgetop).weight=xlthin   上端を細にする

selection.borders(xlinsidehorizontal).weight=xlhairline 中横罫線は極細

selection.borders(xlinsidehorizontal).weight=xlhairline 中縦の罫線極細

selection.borders(xldiagonaldown).Weight = xlhairline 斜め下がり罫線

selection.borders(xldiagonalup).Weight = xlhairline   斜め上がり罫線 

selection.borders.linestyle = xlnone       全ての罫線の消去

 「weight」は太さだけを設定するものだから、全ての罫線を消すには「linestyle」を使わなくてはならない。

 なお回りの罫線のうち下線だけを「hairline」にしたい場合は

 selection.borderaround weight:=xlthin と

 selection.borders(xledgebottom).weight=xlhairline の二つのコマンドを組み合わせる。

 selection.borders(xldiagonaldown).weight = xlhairlineなどの斜め罫線を引く場合、選択したセルが複数の場合は全てのセルに斜め罫線が引かれる。

 あるselectionの中が全て「hairline」で外枠が「thin」の場合は次のように書くと一行無駄なコマンドを書かなくて済みます。

Selection.borders.weight=xlhairline

Selection.borderaround weight:=xlthin

と書いておけば

Selection.borderaround weight:=xlthin

Selection.borders(xlinsidehorizontal).weight=xlhairline

Selection.borders(xlinsidevertical).weight=xlhairline

と3行で書くべきところを2行で済みます。回りに細罫線を引く場合はselection.borderaround weight:=xlthinと書くのだが、これは他の罫線がbordersと複数にするところ、この場合はborderaroundになるので、borderaround とweightの間に[.]はない。

 Bordersのコマンドをかくのは面倒です。その時は「IME」で単語登録をしておきます。

「bb」は”selection.borders(xledgebottom).weight=xl”とすれば楽です。「thin」「hairline」も登録しておくのは勿論です。

vbaでは論理的に複数がある名詞については全て複数でかく。上の霊でborderはいくつも存在することがあるのでborderではなくbordersと複数で書く。ところがselectionは一つしかないので、selectionsという書き方はない。ただし必ずしもこの原則が守られる訳ではない。しかし基本的には全て複数で書けば無難だ。例外だけを覚えておけばいい。

ところでvbaなどプログラムはselectionとか英語を主として使うが、コマンドは英語文法の受動態で書く。だからselection.deleteはselection is deleted

くらいの意味だ。「.」は「is」という意味の符合である。

 「.」はそれ以外の英語の「of」の意味がある。Selection.valueはvalue of selectionと考えればいい。

 また正しくコマンドが掛かれていると単語の先頭が大文字になるし、間違って書かれた場合は赤線などで注意してくれる。vbaにしろ他の言語でのプログラムプの書き方は論理的に構成されているので、プログラムを書くときに全てを暗記するというやりかたは勧められない。コマンドの書き方はいろいろあるので、どんな書き方も論理的に正しければプログラムを実行すれば動いてくれる。意味合いが分からないときは暗記してしまう方が楽だが、これは勉強を同じだ。

 だからプログラムの構築はそのアプローチの方法が正しければ、60過ぎの人にも充分可能だ。

明日に続く

酒巻 修平

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です