同じ過ちを繰り返さないためには、それなりの対策が必要です。(仕事ならチェックリストをつくるなど)
Excelマクロを書いてみると、「ミス→修正→対策」という流れを自ずと考えるようになります。
マクロはミスをして少しずつ強くなる
Excelでできることもかなり多いのですが、Excelでできないことでもマクロを使うと素早く処理できます。


マクロを使うメリット、主なものに
- あらかじめセルに式を設定しておく必要がない
- 繰り返し処理に強い
- データ数を自動でカウントして素早く処理してくれる
- 別ファイルに書き出すこともできる
- タッチタイピングの練習にもなる
- 他のツールとも相性がいい(会計など)
といったことがあります。
ただ、マクロを書くことには慣れが必要です。
「If」の使い方一つでもExcelと書き方も違いますし、繰り返し書かないとなかなか身につきません。
そして、間違えることも多いです。
というか、ミスすることが前提みたいなところがあります。(私の感覚として)
Excelマクロでもミスをして、ミスをして少しずつ強くなっていくという感じです。
マクロを書いてわかる自分のミスの傾向
Excelにある売上のデータ。
左のシート「Data」にある売上のうち、15万円以上の売上データを隣のシート「list」に書き出すということをしようとした場合、
マクロでは次のように書いて、
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub sample() '■変数の宣言 Dim i Dim S S = 2 '■売上が15万円以上の日の情報をピックアップする For i = 2 To Range("a" & Rows.Count).End(xlUp).Row If Worksheets("data").Range("D" & i).Value >= 150000 Then Worksheets("list").Range("A" & S).Value = Worksheets("data").Range("A" & i).Value Worksheets("list").Range("B" & S).Value = Worksheets("data").Range("B" & i).Value Worksheets("list").Range("C" & S).Value = Worksheets("data").Range("C" & i).Value Worksheets("list").Range("D" & S).Value = Worksheets("data").Range("D" & i).Value '■次の行に変更する S = S + 1 End If Next End Sub |
F5をクリックすると、左の「Data」シートのうち、売上15万円以上のデータを「list」シートに書き出すことができます。
こんな感じで、すんなり書ければいいのですが、書き間違ったり、モレていたりなどでそうはいかないことも。
例えば、
Range(“A5”).Value =7
と書けば、A5セルに「7」が表示されます。
でも、書き方が正しくないと赤く表示されます。
あいまいなのは許してくれません。
彼女から「ハッキリしない人は、イヤ」って言われているがごとく。
青色で表示した繰り返し処理「For〜Next」の中で、Excelのif関数にあたる、「もし〜なら」を使うなら、赤で示した3つ、
- If
- Then
- End If
の3つをキッチリ使っていないと、エラーになります。

End ifがないとエラーに
このケースではEnd ifがないからエラーになったわけです。
上から順番に書いていると、書いているうちに「End if」のことをすっかり忘れてしまうというミス。
これが私の場合には、多かったです。
同じミスを繰り返さないように対策が必要です。
マクロを書いてミスにどう対策するかをカラダで覚える
対策として、「If」から(条件)を書き始めたら、長い(処理)部分を書くより先に「End if」を書いてしまうこと。
これでミスがかなり減りました。(といってもたまにやりますが)
【ミスの傾向】問題点は「End if」を書き忘れちゃうこと
最終的にはこのように書きたいのですが、上から順番に書くと書いてるうちに「End if」のことはたいてい忘れます。
【対策】①「If」から「Then」までの条件を書いたあとにすぐ「End if」を書いちゃう
そこで、条件を書いたら、すぐに「End if」を書いてしまい、
【対策】②「End if」の下に処理(どうしたいか?)を書く
その下に処理(〜する)を書いてから、
【対策】③処理の情報の部分を切り取って
[Home]→[Shift]→[↓(下)]→[↓(下)]→[↓(下)]
Macの場合には[Home]がなく、[Fn] +[ ←]になります。
で青く反転させて、記述を見やすくするために[tab]で1つ奥にずらしてから[Ctrl]+[X]で切り取り、
【対策】④「If」と「End if」の間に貼り付ける
「End if」の行で[Ctrl]+[V]をして貼り付ければ、目標のゴールにたどり着くことができます。
最初の頃は、かなり苦戦したのですが、これでミスがかなり減りました。
マクロを書いていると、
- 1つ1つ正しく書かないと反応してくれない
- ひとまず[F5(一気に処理)]や[F8(1つずつ処理)]で動かしてみて、エラーが出たらそのつど対処する
- 最後にまとめてではなく、一区切りずつ確認する(どこがミスかわからなくなるから)
というのが当たり前なので、「ミスを減らすにはどうしたらいいか?」を自ずと考えるようになります。
仕事でもミスがあれば、そのミスを減らすためにチェックリストをつくったり、申告書も1度ならず2回、3回と確認しますが、マクロを書くことでそういうプロセスで共通するものを感じます。
マクロ、実は英語力はそれほど必要でないと思っていますし、わからない書き方、エラーの内容はググれば大抵わかります。
タイピングの練習にもなり、効率化する1つのツールとしてマクロをやってみるのはおすすめです。
こうしてたまに記事を書いて、敷居を低くしているつもりではあります。
【編集後記】
昨日、夕方に図書館で本を借りようと、本をスキャンする機器にカードを入れたら画面に「お聞きしたいことがあります。カウンターにお越しください。」とのメッセージが…。何だろう??返却し忘れたかな??とドキドキで聞いてみると、「電話番号変わりました?」と。そういえば固定電話、もうないって伝えていませんでした。かなり前の話ではありますが…。
【昨日の1日1新】
※「1日1新」→詳細はコチラ
図書館で変更手続き
メールでとある問合せ(した方)