Excelマクロで、メッセージボックス(はい、いいえ、OK、キャンセル)を使わない理由

1904

自分でプログラミングするメリットの1つは、自分好みにつくれること。
私は、メッセージボックスが嫌いなので、一切入れていません。

image

Excelマクロのメッセージボックス

Excelマクロ(VBA)では、こういったボックスを表示することもできます。

image

image

image

プログラムとしては、こう書くだけです。

(「test」という名称は任意)

Sub test()

msgbox (“おわったよ!”)

End Sub

メッセージボックスに「OK」と「キャンセル」を表示するなら、

image

こう書きます(「test」「Message」は任意)。

Sub test()

Dim Message As Long
Message = msgbox(“集計しますか?”, vbOKCancel)
End Sub

通常は、このあとに、「OK」を押したか、「キャンセル」を押したかで処理をわけるプログラムを書いて使います。

Sub test()

Dim Message As Long
Message = msgbox(“集計しますか?”, vbOKCancel)

If Message = vbOK Then
Range(“a3”).Value = Range(“a1”).Value + Range(“a2”).Value
End If

End Sub

こういったプログラムだと、プログラムを実行すると、メッセージボックスが表示され、OKをクリックまたはEnterキーが押されると、

image

集計できるというしくみです。

image

こう書くと、ボタンが「はい」と「いいえ」になります。

Sub test()

Dim Message As Long
Message = msgbox(“集計しますか?”, vbYesNo)
End Sub

image

こう書くと、「はい」、「いいえ」、「キャンセル」というボタンです。

Sub test()

Dim Message As Long
Message = msgbox(“集計しますか?”, vbYesNoCancel)
End Sub

image

ソフトっぽくって、なんだかかっこいい気もしますが、私はこういったものを一切使いません。
ボックスが表示されて入力するものも使わない主義です。
(RPAで、タスクバーから起動する場合は使うことがあります)

image

メッセージボックスを使わない理由

メッセージボックスのたぐいを使わないのは、工程が1つ増えるからです。
効率化しようとしていて、プログラミングして、実行させても、メッセージボックスのボタンを押す工程があるとその分無駄になります。

前述の例でいえば、集計するというプログラムを実行したら、すぐ集計してしまえばいいわけです。
集計して

集計しますか?
と聞く必要はありません。

今、いうたがなという感じになります。
image

世の中の古いソフト(税務ソフト、会計ソフトも)は、こういったボックスが特に多いものです。
何回クリック(Enterキー)を押させるのか!と疲れることも。
多くの方が使うことを想定しているので確認が必要なタイミングもあるのでしょうが、過保護すぎるような気がします。
というよりも、作成者の責任を逃れるための確認のような意味合いもあるのでしょう。

プログラムを実行したら最後まで流れるように仕事が進むのが理想です。
だからこそ、自分がプログラミングするときは、メッセージボックスを使いません。

Excel内ならExcelマクロ、複数のソフトならRPAを使えば、それが実現できます。

UiPath×税理士。「源泉所得税のe-Tax送信→お客様へメール送信」を自動化。 | EX-IT

「取り返しがつかないことになったら……」
「間違えて処理したら」
「確認しないと心配」
とならないように、プログラムを間違えて実行してしまっても問題のないようプログラミングしています。

たとえば、そのシートにデータをつくらず、別のシートや新しいブックのシートにデータを入れるようにすれば元のデータは壊れません。
心配ならプログラムを実行する前にCtrl+Sで上書き保存をすればいいですし、それをプログラムに組み込む場合もあります。
何かしら工夫はできるので、メッセージボックスを躊躇なくなくすことができるわけです。

だからこそ、お客様に提供するマクロにはメッセージボックスがなく、マクロセミナーでも伝えていません。
自分が使わない、使わないようにしているものは伝えない主義ですので。

自分好みに仕事ができるメリット

仕事をつくるという意味では、プログラミングがおすすめです。
仕事が速くなるだけではなく、自分好みに仕事ができます。

私は、メッセージボックスを使わない主義ですが、使う主義の場合もプログラミングができれば、それを反映できるわけです。
他人がつくったプログラムが使いにくいのは、その人の好みが反映されているからでもあります。
人によりその好みは微妙に違うもので、既成のソフト、仕事のやり方は、多少なりともずれがあるものです。
そのずれがあったら、仕事はうまく進みませんし、進むとしても窮屈でしょう。
自分好みに仕事ができれば、仕事がより楽しめますし、好きでやるので効率も上がります。

私がはじめて勤めた総務省統計局で、プログラムを実行する仕事がいきなりありました。
20弱の帳票を出すプログラム(統計用のプログラム)を1つずつ実行するというものです。
前任者がつくったプログラムを1つずつ実行し、それこそ「印刷しますか?」のボックスで、Yes、Noを指定しなければいけません。
しかも各プログラムに3つずつ、それが20弱ありますので、60回ほどの連打です。
その仕事が毎月あると聞き、「まじか……」と。

プログラムを開いて、連打連打は嫌だと思い、まずは、プログラムをすべて1つにしました。
その後プログラミングに慣れてきたら、もっとうまく書けましたが、その当時はひとまずプログラムをつなげるだけ。
それでも、1つのプログラムにすれば、プログラムを開く手間がなくなります。
あと、連打。
これをなくせないものかと、プログラムをいじり、ボックスが表示されないようにしました。

・プログラム実行→20弱の帳票がプリントアウト

というように変えれたのです。

ただ、プリントアウトは、当時(1997年)、ドットプリンター……。
ギコギコとめちゃくちゃ遅く、しかも配布する分出てきて、それをちぎらなければいけません。
それも嫌だったので、プログラムをExcelマクロに変え、Excelで帳票をつくり、それを研究しつつ、5か月目くらいに変えました。
もちろん、根回しして。こんな感じ(Excelの資料)でもいいですかね?と。

仕事は、自分好みに変えていったほうがよりうまくなります。

・自分好みのソフトを見つける
・そのソフトの設定や使い方を自分好みにする
そして、
・プログラミングというスキルを身につける
ことで、自分好みに変えることができます。
(プログラミング教育が、そのメリットを含んでいるかどうか……。自分好みというのは組織にそぐわないので)

プログラミングは1つの方法でしかありません。
自分好みに仕事を変えていくことを意識してみましょう。
(自分が使わないものは伝えない、売らないというスタンスも自分好みです)

これも独立後のメリットの1つです。

(独立を考えている方は、独立前でも限られた中で自分好みをつくっていきましょう。それが独立後に活きます)

 


【編集後記】

昨日は、たまたま重なった打ち合わせを2件。
同じ場所でやりました。
どちらもハードですけど楽しみな仕事です。

【昨日の1日1新】
※詳細は→「1日1新」

渋谷 坐忘のサンドイッチ
とある打ち合わせ
サンマルク コーヒーフロート

【昨日の娘日記】
バッグを持って歩くのが好きで、昨日は保育園用のバッグを持とうと。
ただ、重すぎてふらふらするので、中身は取り出しました。
バッグを腕にかけたり、ネックレス(たまにトライアスロンの完走メダル)をかけたり、女の子っぽいことをなぜかやるのが不思議です。

Spread the love