エクセルマクロの挫折しない勉強法や仕事で使いこなすコツを徹底解説!
講師の寺澤さんはこれまでの20年間マクロを使って様々な業務を効率化させるなど、数多くの社内表彰を受けてきました。例えば、数十万行の元データから分析用データを毎週作成する作業。人の手だと1週間かけても終わらない作業ですが、マクロを使うと30分程で完成してしまいます。さらに自ら社内講座も主催、全くマクロを触ったことがない数百人を指導し、満足度98%と人気を博しています。近著『4時間のエクセル仕事は20秒で終わる』では、そのエッセンスを余すところなく紹介しています。
本連載では、エクセルマクロを仕事で使うための本当に必要な知識だけを、できるだけわかりやすく説明していきます。
「はい」「いいえ」を選択させる方法
「はい」「いいえ」をユーザーに選ばせて、答えによって処理を変えるメッセージボックスを作ってみましょう。
次のようなメッセージボックスを出し「はい」を押すと「処理を完了しました」を表示させます。
「いいえ」を押すと「処理を中止しました」を表示し、処理をストップさせます。
ユーザーは「はい」や「いいえ」をクリックして選択肢を選びますが、マクロは答えを日本語で把握しているわけではありません。「はい」を6、「いいえ」を7 と数値で認識しています。
では、Ifと変数を使ってメッセージボックスでの条件分岐を書いていきましょう。
メッセージボックスの回答は事前に作った変数にしまい、中身によってその後の処理が変わるようにします。
まず「Dim」で変数を宣言します。変数はわかりやすいようにAnswerからとってansにしましょう。「ans =」の後にメッセージボックスのマクロを書くと、回答を変数に入れることができます。
Dim ans ’メッセージボックスの回答用
ans = MsgBox (“処理を続行しますか?”, 4, “ 確認”)
ここで注意点が2つあります。
①変数にメッセージボックスの回答を入れる場合は、通常とは異なり「MsgBox」の後ろを( ) で囲まなければいけない。
②必ずイコールの左側に変数を、右側に「MsgBox」を書く。(変数のルール「=の後ろの値を=の前へ代入する」より)
次はans の値によって処理をIf で分岐させます。もし6(=はい)だったら「処理を完了しました」というメッセージを出します。7(=いいえ)だったら「処理を中止しました」と表示して処理を中止します。
If ans = 6 Then
MsgBox “処理を完了しました”
Else
MsgBox “処理を中止しました”
Exit Sub
End If
完成させて動かしてみよう
「メッセージ2」という名前を付け、マクロを書きましょう。
ボタンにマクロを登録し、保存した後に押してみてください。選択肢があるメッセージボックスが出て「はい」を押すと「処理を完了しました」が表示され「いいえ」を押すと「処理を中止しました」というメッセージボックスが出て処理がストップすれば成功です!
1 MsgBox、If、Then、Else、Exit Subの綴りが間違っている
2 はい/いいえを確認するMsgBoxに( ) がついていない
3 メッセージが" "(ダブルクォーテーション)で囲まれていない
4 ThenやEnd Ifが抜けている
(本稿は、寺澤伸洋著『4時間のエクセル仕事は20秒で終わる』を抜粋、再構成したものです)
寺澤伸洋(てらさわ・のぶひろ)
1976年、大阪府生まれ。灘高校、東京大学経済学部卒業後、日系メーカーで17年間勤務。経理や営業、マーケティング、経営企画などに携わり、独学で覚えたエクセルマクロを用いて様々な分析や業務改革を行う。2017年、GAFAの日本法人のうちの1社へシニアマネージャー(部長)として転職。これまでエクセルマクロを用いた業務改善などで数多くの社内表彰を受けている。手作業では不可能なほど大量のデータを、短時間で分析しやすく加工したことが評価され、社内エクセルマクロ講習会の講師として延べ200人以上に講座を実施。エクセルマクロについて1から10まで教える詰め込み型の学習ではなく、仕事に必要な部分だけを効率的に学べる講座として満足度98%の高い評価を受けている。