結線図

マクロを作る

《TOP》

3.マクロを作る

マクロ(VBA)を使用すれば、同一セルで「計算結果の表示」も「書込み編集」も両方可能になります。

前章ではシートに計算式とセルの保護が必要でしたが、VBAを使用すると不要になります。

VBAを呼出しプロシャージャーを記述する。

Sheet1タブの上で右クリックメニューを表示する→[コードの表示]を選択するとVBA画面が現れる。

挿入→標準モジュールでプロジェクトウィンドウに「Module1」が作成されます。

挿入→プロシャージャ→名前欄に「test」と記入して「OK」を選択すると、コードウィンドウに「Sub test()」が作成されます。

プロシャージャーを完成させます。(下記コードをコピーして使用できます)

Public Sub test()

' ゼロ値を非表示

ActiveWindow.DisplayZeros = False

'VBAをそのまま記入

[d2] = [b2] * [C2]

[d3] = [b3] * [C3]

[d4] = [b4] * [C4]

[d5] = [b5] * [C5]

[d6] = [b6] * [C6]

[d7] = [b7] * [C7]

[d8] = [b8] * [C8]

'合計欄に関数を記入

Range("d9") = "=SUM(d2:d8)"

Range("d9") = Range("d9").value

End Sub

aこのマクロ(プロシャージャー)を実行すると、合計欄には数式ではなく再計算された結果の値が入力されます。
b値ですので自由に書込み出来ます。(シートの保護は不要です。保護する場合は「A2~D9」セルの保護解除をしておいて下さい。)
プロシャージャーを実行します。(メニューバー→「表示」→「マクロの表示」→ポップアップ画面で「test」を実行)

※ 実行結果には(数式なしで計算結果値が挿入される。直接記入も可能。シートの保護は不要)
行数が多くなることを想定してコードを修正します。(下記コードをコピーして使用できます)

Public Sub test2()

'変数iを宣言(行Noを変数iに)

Dim i As Long

' ゼロ値を非表示

ActiveWindow.DisplayZeros = False

'変数iを2~8まで変化させて実行(For~Next)

For i = 2 To 8

Range("D" & i) = Range("B" & i) * Range("C" & i)

Next i

'合計欄に関数を記入

Range("D9") = "=SUM(D2:D8)"

End Sub

a変数の2は開始行、変数の8は終了行です。表の大きさに合わせて自由に変更して下さい。
btest2を実行してみて下さい。

マクロの実行方法(その他)

1シートにフォームボタン又はコマンドボタンを設けて、そのボタンにマクロを登録する。
2入力値の変更時にマクロが実行させる。
Copyright (C) 2020 Kazuo.Yosikawa
Mail form