前回からの続きです。
VBA の概要説明と VBA 画面 (VBE) の説明が完了したので、次はコードの編集です。
前回同様、マクロの記録で作成したコードを使って操作します。
※ Excel のバージョンは 2021 を使用しています
コードの編集
マクロの記録で作成したコードを参考に、新たな動きをプログラミングしてみます。
ここではコード編集の方法を覚えればよいので、コードひとつひとつの正確な意味は理解できなくても大丈夫です。
コードを書いてプログラムを動かす楽しさを味わえれば成功です。
コードの確認
まずはざっくりでよいので何が書かれているか確認します。
細かい内容は後で調べるとして、マクロの記録で自動作成された内容を調べます。
・マクロ名
先頭にはマクロの記録で付けたマクロ名が書かれています。
・コメント行
‘ で始まる内容はマクロの記録で作成したマクロ名、説明、ショートカットキーです。
・文字入力
A1 セルに文字を書き込んだ処理です。
・セル選択
B2 セルにカーソルを移動した処理です。
・セル色変更
B2 セルにカーソルを移動した処理です。
・残り
残りの処理は上とほとんど同じなので省略。
コードの変更
ざっくりとコードの内容がわかったので、少しコードを追加してみます。
必要そうなコードと不要そうなコードを考えて適当に作成します。
・・・意味がよくわからない部分もありますが、はじめは楽しさ重視で問題ありません。
もし動かなくなってしまったら・・・
マクロの記録からやり直せば復習にもなります。
コード追加
セル選択とセル色変更、文字入力を適当にちりばめました。
セル色変更は Color だけ設定すれば行けそうなので他は省略。
'自分で追加したコード
Range("A1").Select
Selection.Interior.Color = 255
Range("B2").Select
ActiveCell.FormulaR1C1 = "あいう"
Range("C3").Select
Selection.Interior.Color = 65535
Range("D4").Select
ActiveCell.FormulaR1C1 = "カキク"
下が追加したコード。
マクロの実行
自分が追加したコードを実行してみます。
シートをきれいにしてからマクロを実行します。
↓
↓
想定通りに動きました。
コードの整理
コードを追加して実際に動作することまで確認できました。
とりあえずの第一歩としては問題ありませんが、今後に続けるにはもう少し前進しておきたいところです。
例えば・・・
- 処理の順番をわかりやすくできないか
- 他に良い書き方はないか
- 不要なコードが書かれていないか
- コードを読みやすくできないか
などなど・・・私がいつも考えていることはこんなところです。
とりあえず以下のように変更してみました。
コピペ用
' A1 セルの設定
Range("A1").Value = "abcde"
Range("A1").Interior.Color = 255
' B2 セルの設定
Range("B2").Value = "あいう"
Range("B2").Interior.Color = 65535
' C3 セルの設定
Range("C3").Value = "12345"
Range("C3").Interior.Color = 65535
' D4 セルの設定
Range("D4").Value = "カキク"
Range("D4").Interior.Color = 255
変更した内容は・・・
- 処理の順番を左上のセルから処理するように変更
- Select と ActiveCell をやめて、セルを直接指定するように変更
- FormulaR1C1 を Value に変更
- セル色変更の処理を Interior.Color だけに変更
- コメントの追加とインデントの調整
- マクロの名前とショートカットキーも変えてみました・・・
※ Interior.Color は RGB 指定が正しいようですが今回は省略
最後に D4 セルにカーソルを移動したければ以下を追加
Range("D4").Select
結果が同じになったかは確認済み。
練習問題
コード作成、参照、編集できるようになったので試しに練習問題でも。
練習問題
今回作成したマクロ実行後に E ~ H 列に全く同じものを表示する。
以下は、マクロ実行後の想定結果。
ヒント
以下のどれかひとつを試してみる。
- 使ったことがあるコードを使用する
- マクロの記録で実装したい内容を記録してみる
- Web サイトで調べる
ちなみに考えるよりも動かしてみるほうが気づくことが多いです。
答え
以下のコードを一番最後に追加する。
Range("A1:D4").Copy Range("E1")
以下はマクロの記録で作成したもの。これも正解。
Range("A1:D4").Select
Selection.Copy
Range("E1").Select
ActiveSheet.Paste
また、4つのセルにそれぞれ値と色を設定する方法でも正解です。
以前、どこかに記事に「答えは一つではない」と記載したことがありましたが、同じ動きを実現する方法は作成者によって異なります。
まとめ
VBA の使い方 その弐でした。
簡単な操作だけでしたが、編集したプログラムが思い通りに動くと楽しいと思います。
VBA 自体は簡単に始められますので、プログラミング初心者にはおすすめです。
他プログラミング言語の足掛かりとしても良いですし、VBA を極めれば仕事でも十分使えます。