Excelマクロ=VBAをどうやってはじめ、どうやって動かすか。
かんたんなプログラムを書いてみましょう。
Excelマクロを書くステップ
①新しいExcelファイルを開きます。
Ctrlキー+Nで、簡単に新しいExcelファイルを開くことができます。
②Alt+F11でマクロを書くツール(VBE)を開きます。
さらに、[ツール]→[オプション]で、
・[自動構文チェック]のチェックを外す
・[変数の宣言を強制する]をチェックする
という設定にしましょう。
③VBEをクリックして、Alt、I、Mを押します。(又は[挿入]→[標準モジュール]を選択します)
マクロを書く場所が表示されます。
④マクロは、原則として「Sub (マクロ名)」で始まり、「End Sub」で終わります。
マクロ名は自由に決めることができますが、ここでは、「Macro」という名前にします。
「sub macro」と入力し、Enterを押してください。
⑤すると、自動的に、次のような表示になります。VBE側で設定してくれるのです。
この「Sub Macro()」と「End Sub」の間に、プログラムを書いていきます。
()は今の段階では気にしないでください。勝手についてきます。
⑥適当な位置(「Sub Macro()」と「End Sub 」の間)で次のように入力してEnterを押してみてください。
⑦Enterを押すと、次のように自動的に一部が大文字に変わります。
⑧このマクロを実行しましょう。
「Sub Macro()」と「End Sub」の間にカーソルがある状態で、F5を押します。
⑨実行後にExcelを確認してみてください。(Alt+F11)でVBEとExcelの切り替えができます。
次のように、セルA1に5が入力されています。
⑩マクロを次のように書き換えてみてください。
Range(”a1”).Value=5
↓
Range(“a5”).Value=Range(“a1”).Value
※大文字・小文字は気にせず、すべて小文字で書いてEnterキーを押してください。
この文だと、「セルA5に、セルA1を入れる」という意味になります。
どうなるか予測して、F5キーを押してみてください。
⑪マクロを実行すると、次のようになります。
セルA5には、セルA1の値が入るのです。
セルA1をセルA5にコピーしたことと同じ状態とも言えます。
もちろん、「セルA1をセルA5にコピーする」と書くこともできますが、今回の事例の文の方が簡単で、その後の応用もききます。
Excelマクロの注意点
マクロは、正確に書かなければ動きません。
その代わり、正確に書けば、確実にその命令をこなしてくれます。
気がむかないからやらない、うっかり間違えたということはありません(^_^)
正確に書くには、次のような点に注意しなければいけません。
1 文字は””で囲む
Range(”a1”).Value=5のa1というのは文字です。そのため””で囲まなければいけません。
マクロに、これは文字、これは数字ということをしっかり示さなければいけないのです。
曖昧な指示をする上司はいないでしょうか???
そういう曖昧な指示ではマクロはてこでも動きません(笑)
間違いの例として、
Range(a1”).Value=5
Range(a1).Value=5
Range(”a1).Value=5
があります。
もし、セルA1に文字を入れたいなら、
Range(“a1”).Value=”文字”
と書きます。
Range(“a1”).Value=文字
と書くと、エラーがでます。
2 ルールを守る
Range(”a1”).Value=5は、Rangeのルールを使って書いています。
・Rangeのあとに()をつけて、その中に文字列を入れる
・Range(文字列)の後に「.」(ピリオド)をつけて「Value(値)」をつける
という2つのルールを守らなければいけません。
これを守らないと、エラーがでます。(「.value」を省略しても動きますが、今後のため省略せずに書くことを勧めています)
間違いの例として、
Range(”a1”)Value=5
Range(a1).Value=5
Range”a1″).Value=5
Range(”a1″.Value=5
があります。
いろいろめんどくさいと思われるかもしれませんが、きちんとしたマクロを書けば、10000行のデータでも実行してくれますし、ある命令を毎月正確に繰り返してくれます。
人間がやった場合の疲れやめんどくささはありません。
処理時間を短縮できるのはいうまでもないでしょう。
マクロを知っていると、人手もいらなくなりますし、コスト軽減にもつながります。
Excelマクロを使った事例
先ほど書いた
Range(“a5”).Value=Range(“a1”).Value
がすべての基本です。
あるセルの値をあるセルに移すというのができれば、それを応用していろんなことができます。
もちろん、異なるシートや異なるファイル(ブック)に移すこともできます。
複数のシートのデータを1つのシートに移す例(音声付きです)
賃金台帳の値を給与明細に移す例
Excelの現金出納帳の値を会計ソフトインポート用のデータに移す例(音声付きです)
請求データ一覧の値を請求書に移す例
昨日のお客様との打ち合わせでは、「お会いしたときに聞きたかったことがあるんですよ〜」という一言ではじまりました。
内容はFacebook、iPad、Wi-Fiルーター、ノートPCなど(^^)
ご要望にお応えするにも、日頃の情報収集・実践は欠かせません。
もちろん、確定申告の話もしました(^^;)
■著書
『税理士のためのプログラミング -ChatGPTで知識ゼロから始める本-』
『すべてをがんばりすぎなくてもいい!顧問先の満足度を高める税理士業務の見極め方』
ひとり税理士のギモンに答える128問128答
【インボイス対応版】ひとり社長の経理の基本
「繁忙期」でもやりたいことを諦めない! 税理士のための業務効率化マニュアル
ひとり税理士の自宅仕事術
リモート経理完全マニュアル――小さな会社にお金を残す87のノウハウ
ひとり税理士のセーフティネットとリスクマネジメント
税理士のためのRPA入門~一歩踏み出せば変えられる!業務効率化の方法~
やってはいけないExcel――「やってはいけない」がわかると「Excelの正解」がわかる
AI時代のひとり税理士
新版 そのまま使える 経理&会計のためのExcel入門
フリーランスとひとり社長のための 経理をエクセルでトコトン楽にする本
新版 ひとり社長の経理の基本
『ひとり税理士の仕事術』
『フリーランスのための一生仕事に困らない本』
【監修】十人十色の「ひとり税理士」という生き方