見習いエンジニアがゆく

見習いエンジニアの勉強帳 VBA・NWなどなどITの勉強用ブログです。のんびり、のんびり。

Excel VBA 入門編1.3 マクロの記録機能・VBEの表示・コードの記述

こんばんは。ハイルナーです。

前回はVBAの簡単な説明、「開発」タブの表示方法、セキュリティ設定をご紹介しました。

www.heilnervba.work

 

今回はVBAのコードを記述するVBEの表示方法とマクロの記録、実際にコードを書いていきます。よろしくお願いいたします。

※Excel2016の画面での説明となります。

 

 

VBEとは

VBAがマクロプログラムを記述するためのプログラム言語であることを、前回ご紹介しました。

VBEは、「Visual Basic Editor」の略でVBA(コード)を記述する開発環境になります。コードを書いたり、確認したり、デバッグしたり、色々なことができます。

 

VBEの表示方法

VBEを表示するための2つの方法をご紹介します。

 

1.ショートカットでVBEを表示(重要)

Excelでブックを開いている状態のときに「Ctrl」+「F11」を同時に押すとVBEの画面が表示されます。

この方法は、VBEの表示の際に毎回使うので覚えておいてください!!

 

「Ctrl」+「F11」で下図のVBE画面を表示できます。※設定によって、画面に多少違いがあります。 

f:id:melancholy198x:20190112055535j:plain

VBEの画面

2.開発タブからVBEを表示する方法

「開発」タブ、「Visual Basic」を順番に選択すると、VBEの画面を表示できます。

ショートカットを使った方法の方が効率が良いので、こういう方法もあるということを覚えておいてもらえればと思います。

f:id:melancholy198x:20190112055850j:plain

開発タブからのVBE表示

 

「マクロの記録」を使ってみよう

次は「マクロの記録」を使ってExcel操作の記録とその記録されたソースコードを見たいと思います。

一旦VBEはVBEの画面右上の「×」を選択して閉じておいてください。

 

マクロの記録

A1:A10セルのデータをC1:C10にコピーするマクロを記録します。

 

手順

  1. セルのA1:A10に何でも良いのでデータを入れる(私は1~10の数字を入れています)
  2. 「開発」タブ>「マクロの記録」を選択する
  3. 表示される「マクロの記録」ダイアログボックス内の「マクロ名」をVBA練習に変更し、「OK」を押す
  4. 「Ctrl」+「Shift」+「↓」キーを押して、A1:A10セルを複数選択し、「Ctrl」+「C」キーでコピーする
  5. C1セルを選択し、「Ctrl」+「V」キーを押して、C1:C10セルに貼り付ける
  6. 「ESC」キーを押して、範囲の解除後、A1を選択する
  7. 「開発」タブの「記録終了」を選択する

 

f:id:melancholy198x:20190112182730j:plain

マクロ機能の練習

 

では、次にマクロを使ってみましょう。

 

マクロを実行する

事前にC1:C10の数字データは消しておいてください。

 

手順

  1. 「開発」タブ>「マクロ」を選択する
  2. 表示された「マクロ」ダイアログボックスで先ほど記録した「VBA練習」が選択されていることを確認し、「実行」を押す

 

そうすると、A1:A10のデータがC1からC10にコピー&ペーストされます。

試しにA1:A10のデータを別の数字にしたり、文字にしたりして、マクロを実行してみてください!!変更したデータがC1:C10にコピー&ペーストされます。

 

f:id:melancholy198x:20190112184913j:plain

マクロの実行

 

マクロのコードをVBEで確認する

A1:A10セルのデータをC1:C10にコピーするマクロプログラムを「マクロの記録」機能で記録しました。

実際にどういったコードが記録されているかをVBEから見てみましょう。

 

VBEの表示は、「Ctrl」+「F11」キーを押してください。 

標準モジュールの右となりの「+」をクリックして、「Module1」を選択すると記録されたソースコードが表示されます。

f:id:melancholy198x:20190112185630j:plain

VBEでコードを確認する

 

ただのコピー&ペーストですが、こんなにもコードが記録されていることが分かります。それは、先ほどの操作を全て記録している為です。

「マクロの記録」機能は簡単で便利すが、コードはとても複雑になってしまいます。「マクロの記録」で延々と記録したプログラムを作って、どこかでバグが発生した場合、改修がとても難しいです。

そのため、自分で簡潔なコードを記述するスキルを身に付けましょう!!

 

VBEでコードを書いてみる

「マクロの記録」機能で記録した動作を、合理的なソースコードで書いてみましょう。

 

まず、やりたい処理内容を振り返ってみましょう。

やりたい処理内容:「A1:A10」のセルデータを「C1:C10」にコピー&ペーストする

その処理を実現するためのコード例をいくつかあげてみます。

例1)

Sub VBA練習_1()
    Range("A1:A10").Copy Destination:=Range("C1:C10")
End Sub

 例2)

Sub VBA練習_2()
    Range("A1:A10").Copy Range("C1:C10")
End Sub

 

すごいシンプルに書くことができました。処理内容を1行だけにすることができました。これだけ少ないコードなら、バグを探すのも簡単ですね。

 

次に少しだけ工夫したコード。

例3)

Sub VBA練習_3()
    Dim lastRow As Long
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
   
    Dim i As Long
    For i = 1 To lastRow
        Cells(i, 3).Value = Cells(i, 1).Value
    Next i
End Sub

A列でデータが入っているセルの最終行を取得して、コピー&ペーストをする方法です。最終行の取得はよく使うので、こういうのがあるんだなぁくらいで良いので、覚えておいてください。

最終行の取得:Cells(Rows.Count, 1).End(xlUp).Row

 

VBEからのマクロの実行

「開発」タブの「マクロ」から実行する方法もありますが、ほとんど使いません。

VBEからマクロを実行する3つの方法をご紹介します。どれも実行したいマクロ内にカーソルがある状態で行ってください。

 

<VBEからマクロを実行する>

  1. 「Sub/ユーザーフォームの実行」ボタンを押す方法
  2. 「F5」キーを押す方法
  3. 「ファイル」「編集」などが並んでいるところの「実行」を選択し、「Sub/ユーザーフォームの実行」を選択する方法

f:id:melancholy198x:20190112192951j:plain

VBEからのマクロの実行

図形にマクロを登録して、実行する

VBEからのマクロの実行はマクロ作成者が行います。自分用に作成したマクロならいいのですが、会社内で複数人が利用する場合は図形などにマクロを登録して、その図形を押してマクロを実行するようにします。

一般ユーザーがVBEを開いて実行することは、あまりありません。コードを間違えて編集される可能性がありますし、そもそもコードの中身を見えないようにパスワードをかけておいてVBEから実行できないようにしておくことがほとんどです。

 

それでは、図形にマクロを登録してみましょう!

 

フォームコントロールにマクロを登録する

  1. 「開発」タブ>「挿入」>フォームコントロールのボタンを選択する
  2. マウスをドラッグしてボタンを作成する
  3. 表示される「マクロの登録」ダイアログボックスでボタンに登録するマクロを選択して、OKを選択する

f:id:melancholy198x:20190204105507j:plain

「開発」タブ>「挿入」>「フォームコントロール」>「ボタン」

f:id:melancholy198x:20190204105621j:plain

「マクロの登録」ダイアログボックス

 

 

マクロを登録したボタンを押すとマクロが実行されて、A1:A10のセルの値がC1:C10にコピーされます。

f:id:melancholy198x:20190204105857j:plain

 

図形にマクロを登録する

  1. 「挿入」タブ>「図形」>任意で図形を選ぶ(今回は正方形/長方形を選択しました)
  2. 図形を選択して、マウスの「右クリック」>「マクロの登録」
  3. 表示される「マクロの登録」ダイアログボックスで、登録するマクロを選択して、「OK」を選択する

 

 

是非、いろいろと試してみてください!次回はVBEの設定などをご紹介する予定です。

それではお読みいただきありがとうございました。