【Excel VBA】 初心者向け「VBA の使い方」その弐 コード編集

Excel 小技集小技集
スポンサーリンク

前回からの続きです。

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

変更した内容は・・・

  • 処理の順番を左上のセルから処理するように変更
  • SelectActiveCell をやめて、セルを直接指定するように変更
  • FormulaR1C1Value に変更
  • セル色変更の処理を Interior.Color だけに変更
  • コメントの追加インデントの調整
  • マクロの名前とショートカットキーも変えてみました・・・

 ※ Interior.ColorRGB 指定が正しいようですが今回は省略

最後に 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極めれば仕事でも十分使えます。