合計など、常に状態によって変化させるものは計算式。

「合計」のように、他のセルの値が変わった瞬間に連動しなければならない場合は「計算式」で対応する。

ワークシート上に手入力でデータを登録、追加等を行なうのであれば、当然、「計算式」をセットして運用します。「合計計算」のVBAを作っても、それを起動しなければ合計が合わないことになってしまいます。

戻る 先頭に戻る

一過性のものはVBA

1回セットしたら、以後ほとんど変更がないような内容は、VBAでセットしたほうが良い。

例えば、元々の値の更新をVBAで行ない、ワークシート上で直接操作しないのであれば、各行の横合計に計算式をセットしていても次にVBAが動くまで何の値も変動しないなどというケースが良くあります。このようなケースでは、VBA上で横合計を算出して「値」でセットした方がワークブックが軽く仕上げられます。

戻る 先頭に戻る

計算式はVBAよりいろいろな限度がある。

複雑な判断や他表参照など、計算式では対応しにくいケースや処理が「重く」なってしまうケースでは、VBAで記述した方が柔軟に処理できます。

「計算式」の限度として、1つの計算式には関数が最大で30個までしか使えないという点があります。IF関数」を何重にもネストして判断するような、複雑な式を多くのセルに収容するような場合は、そのセルの組み合わせ回数分を行列移動させながら計算する処理をVBAで作成した方が、はるかに軽いワークブックになります。

他表(他ブック)の値をリンクで自ブックに持ってくるような場合、参照範囲の全セルに参照元を示す長い式(同じパス名、ファイル名が含まれてしまう)が作成されてしまいます。これらも「そのブックを開いて、シートを値で自ブックのシートに貼り付け、そのブックを閉じる。」という処理をVBAで作成すれば、そのワークブックのファイルサイズが何十分の一になるようなこともよくあります。VBAで貼り替えるなら、ワークブックを開いた時に「リンクを更新しますか」のメッセージも表示されません。

戻る 先頭に戻る

計算式とVBAを組み合わせて利用する。

計算式、VBAとも「良い所取り」で使いましょう。

「計算式」のページに「ふりがな」の処理の説明があります。この説明にはワークシートのイベントによるマクロの処理も説明してあります。組み合わせて使う例です。

「氏名」や「住所」などをIMEを使って漢字で入力させるのですが、このIMEからの入力情報を「PHONETIC」というワークシート関数でふりがなとして取り出すことができます。これによりふりがなを再度入力する手間を省く利点があります。

しかし、計算式をセルに貼ってしまうのですから、誤入力も発生するし、難しい漢字を単漢字音読みで入力することもあるでしょう。こんな時にふりがなを修正することができません。

そこで、その「PHONETIC」の計算式はどこか見えないセルに入れておき、セル値の変化イベントで実際のふりがなの項目に転記させるという「手」があります。転記するだけの簡単なイベントマクロです。
このように計算式でできること、マクロでできることを組み合わせられると、簡単に仕組みを作ることができるようになります。