静岡県三島市の税理士、松井元(@hajime_matsui)です。
こんにちは!
プログラミングには「フラグが立つ」という考え方があります。
そして、それは Excel VBA(マクロ)でプログラミングするときにも使えます。
場合分けをするときに便利です!
1、Excel VBA(マクロ)でのフラグの使い方
よく「〇〇フラグが立つ」って言い方をすると思いますが、その場合のフラグが立つというのは「条件を満たす」という意味になります。
「今日、残業フラグが立ったよぉ。」
とぼやく人は、定時直前に上司から「今日中にこれやっといて!」と指示を受けたりしたのでしょうね。
残業の条件 = 上司からの突発的な指示
を満たしてしまったのです。
さて、元々このような↑ フラグという表現はプログラミングから来ているはずです。
プログラミングで言う「フラグが立つ」というのも、「条件を満たす」ことであり
条件を満たしたときに、「0を1にする」ことでそれを表現します。
例えば、変数 Flag を使っていた場合、最初は Flag を0にしておきます。
Flag = 0
そして、条件を満たしたときに Flag を1にします。
Flag = 1
*ここで言う条件というのは、例えば
●セルA1~A10の合計が100を超えた場合
のように表現できることであり、プログラミング上では IF 文を使って表すことが多いです。
そして後々、変数 Flag が0か1か?(フラグが立っているか否か?)によって、処理を分けるのに使います。
1、Excel VBA(マクロ)でフラグを使う実例
さて、それではフラグを使った簡単な実例を示しますね。
例えば、次のようなシートがあったとします。
・セル「B1」に消費税率を入力
・セル「B2」に税込売上高を入力
して、マクロを実行するとセル「B3」に税抜売上高が表示されるものですが
セル「B1」に入力する消費税率は 8 or 10 でなければならないものとします。
フラグを使って、上記以外の消費税率が入力された場合にアラートを表示して終了するようにしてみます。
*VBA を使わなくてもできることではありますが。
全VBAコード
全VBAコードを以下に示します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Sub Zeinuki() Dim Flag As Double 'フラグ' Dim Zeiritsu As Double '消費税率' Dim Kazei As Double '課税売上高' Flag = 0 '変数 Flagの初期値' Zeiritsu = Cells(1, 2).Value Kazei = Cells(2, 2).Value If Zeiritsu <> 8 And Zeiritsu <> 10 Then Flag = 1 Zeiritsu = Zeiritsu / 100 If Flag = 1 Then 'フラグが1の場合の処理' MsgBox "消費税率は 8 or 10 を入力して下さい!" Cells(1, 2).ClearContents Cells(3, 2).ClearContents Exit Sub Else End If '税抜売上高の計算と表示' Cells(3, 2).Value = Kazei - Application.Round(Kazei * Zeiritsu / (1 + Zeiritsu), 0) End Sub |
VBAコードのフラグ部分の解説
1 |
If Zeiritsu <> 8 And Zeiritsu <> 10 Then Flag = 1 |
セル「B1」に入力された値が 8 でも 10 でもない場合に、変数 Flag を 1にしてます。
つまりフラグを立てています。
1 2 3 4 5 6 7 8 9 10 11 |
If Flag = 1 Then 'フラグが1の場合の処理' MsgBox "消費税率は 8 or 10 を入力して下さい!" Cells(1, 2).ClearContents Cells(3, 2).ClearContents Exit Sub Else End If |
変数 Flagが 1になっている場合(フラグが立っている場合)は
・アラートを表示
・セル B2、B3 の値を消す
・コードを終了
上記のようにしています。
つまり、セルB1に 8 か 10以外の消費税率が入力されたら計算をしないようにしているということです。
3、まとめ
Excel VBA(マクロ)でフラグを使う方法についてお話ししました。
簡単な実例を示しましたが、実際にはもっと色々と複雑な処理をします。
条件を満たすかどうか?
0か1か?
で処理のパターンを分けることで、頭の中をすっきりと整理することができるのがフラグの良いところだと思います。
編集後記
昨日(9/5)は午前中は、相続の現地調査へ。
土地の形状を確認し、間口の距離を測定して来ました。
また、午後は新規でやらせて頂いている顧問先を訪問しfreeeの使い方などをご指導させて頂きました。