【Excel VBA マクロ独学者・初心者向け】VBA 学習の第一歩【このページからスタート】

目次

このページの概要

このページでは、Excel VBA マクロを作成したい人向け、これから独学で勉強を開始する人向けに、Excel VBA マクロを作成するための基礎知識をまとめています。

このページを最初に読むことで、スムーズに Excel VBA マクロ作成の勉強を進めることができるようになることを目的としています。

Excel VBA とマクロとは

Excel VBA とはプログラミング言語のひとつであり、Excel で様々な処理をすることに特化した言語です。

Excel マクロとは、Excel VBA によって作成された一連の処理を行う機能のことです。

Excel マクロを作成するための言語が Excel VBA であるという関係です。

マクロを作成するとはどういうことなのか

マクロを作成するということは「ある機能を持った一連の処理を構築する」ということです。

この一連の処理の中には様々な基礎的要素が含まれています。例えば、

  • 値を代入する
  • 四則演算を行う
  • 条件式の評価を行う
  • 繰り返し処理をする

などです。マクロ作成者はこれらの要素を組み合わせて一連の処理を構築します。

マクロはどのツールで作成されてどこに保存されるのか

エクセルには VB エディタという、VBA でマクロを作成するためのエディタが含まれています。

エクセルのファイルを開き、[alt + F11] を押下してみてください。すると以下画像のようなウィンドウが表示されるはずです。これが VB エディタです。

この画面上でマクロの作成・管理を行います。

この VB エディタで作成されたマクロは、エクセルファイルの中に保存されます。

マクロを含むエクセルファイルの拡張子

エクセルファイルの拡張子は通常は「.xlsx」です。一方で、マクロを含むエクセルファイルを保存するためには、拡張子を「.xlsm」(マクロ有効ブック)に変更する必要があります。

マクロを含むエクセルファイルを初めて保存する際には、「名前を付けて保存」を実行し、保存の際に拡張子を「.xlsm」にする必要があります。

Excel VBA マクロの基礎をマクロを作成しながら学ぶ

ここからは、Excel VBA マクロの基礎を、実際にマクロを作成しながら学んでいきます。

VB エディタの起動と画面の確認

まずはエクセルファイルを新規作成し、そのファイルを開いた後 [alt + F11] を押下して VB エディタを開いてください。

VB エディタの画面左上に「プロジェクト – VBAProject」と記されたエリアがありることを確認してください。

このエリアの中に、現在開いているエクセルファイル毎にツリー状に情報が表示されています。デフォルトでは、以下のような構造になっていることを確認してください。

  • VBAProject (<エクセルファイル名>)
    • Microsoft Excel Objects(フォルダ)
      • Sheet1 (<シート名>)
      • ThisWorkbook

次に VB エディタの画面右側の広めのエリアを見てください。デフォルトではグレー表示で何も表示されていませんが、ここは VBA のコード(処理内容)を記述するエリアで、マクロ作成時はこのエリアで作業します。

ここで、プロジェクトエリアの「ThisWorkbook」をダブルクリックしてみてください。

右側のエリアに以下画像のようにテキストエディタが表示されることを確認してください。

このエディタ上で処理内容を記述していくことになります。

標準モジュールの追加

マクロを作成する際はエクセルファイルに対して標準モジュールというものを追加して、その標準モジュールに対して記述していくことが一般的な流れです。

標準モジュールの追加は、プロジェクトエリアで対象のファイルのプロジェクト上で右クリックをして、[挿入 → 標準モジュール] を選択することで行うことができます。

標準モジュールの追加後、プロジェクトエリアで以下がツリーに追加されたことを確認します。

  • 標準モジュール
    • Module1

マクロの構造【プロシージャ】

プロジェクト欄で「Module1」をダブルクリックしてください。こうすることで VB エディタの右側のエディタエリアに Module1 に対するエディタを表示できます。

画面右側のエリアにエディタが表示されたことを確認します。

右側のエディタエリアに、

sub test

とだけ入力した後、[Enter] を押下してみてください。すると

Sub test()

End Sub

と自動で補完されたはずです。

この Sub test() ~ End Sub までが一つの塊で、この塊をプロシージャと呼びます。

マクロはプロシージャ単位で実行されます。

この Sub test() ~ End Sub の間に処理を記述していきます。

VBA の基本的な性質として以下があります。

  • 1行につき1つの処理を記述する(別の行に記述した内容は別の処理と認識される)
  • 上から下に向かって処理が実行される
  • 全角文字を含めるとエラーになる
  • 行頭のインデント(半角スペース)は任意に入れることができる
プロシージャの名前

上記の例で作成したプロシージャ Sub test() ~ End Subtest の部分はプロシージャの名前です。プロシージャの名前は任意の名前にすることができますが、一定の規則に従う必要があります。規則から外れた名前を付けるとエラーになるため、エラーになった場合は別の名前を付けてください。

マクロの実行とメッセージボックスの表示

以下のようなメッセージボックスを表示するマクロを作成してみましょう。

今、エディタエリアに以下のように記述されている状態かと思います。

Sub test()

End Sub

ここに以下のように一行追加してください。

Sub test()

    MsgBox "こんにちは"

End Sub

なお、追加する行の行頭のスペースは Tab を一度押下すれば OK です。

メッセージボックスを表示する構文
  • MsgBox "<表示したい文字列>"
    • MsgBox」と「"<表示したい文字列>"」の間は半角スペースを入れる

上記のように、VBA の中でダブルコーテーション「””」で文字を囲うと、囲われた中身はプログラムではない文字列として扱われます。通常は使用できない全角文字もダブルコーテーションの中では使用できます。

では、作成したマクロを実行してみましょう。

マクロの実行は以下の手順で行います。

マクロの実行手順
  1. カーソルを実行したいプロシージャの内側に持ってくる
  2. 実行ボタンをクリックするか、「F5」キーを押下する

まずエディタ内のカーソルを、実行したいプロシージャの Sub ~ End Sub の間のいずれかの位置に持ってきます。

次にマクロを実行します。実行ボタンはメニューバーの中の以下赤枠のボタンです。このボタンをクリックするか、F5 キーを押下することでマクロを実行できます。

マクロを実行した結果、以下のメッセージボックスが表示できましたでしょうか。

おめでとうございます。はじめてのマクロ作成ができましたね。

四則演算をしてみる

次に四則演算をして、その演算結果をメッセージボックスで表示してみましょう。

VBA で四則演算をするためには以下の記号を用います。

四則演算の記号
  • 足し算 → プラス「+
  • 引き算 → マイナス「-
  • 掛け算 → アスタリスク「*
  • 割り算 → スラッシュ「/

以下のように、メッセージボックスの文字列部分を計算式に変えてみてください。メッセージボックスでは、文字列の代わりに計算式を指定して、その計算結果を表示することもできます。

Sub test()

    MsgBox 1 + 2

End Sub

このマクロを実行してみてください。以下のように 1 + 2 の計算結果が表示されます。

同様に、引き算、掛け算、割り算も行ってみてください。

◆引き算

Sub test()

    MsgBox 10 - 3

End Sub

実行結果:

◆掛け算

Sub test()

    MsgBox 10 * 5

End Sub

実行結果:

◆割り算

Sub test()

    MsgBox 10 / 5

End Sub

実行結果:

もちろん、もっと長い計算式を記述することも可能です。

◆四則演算を組み合わせた式

Sub test()

    MsgBox (10 / 5 + 3 ) * 5

End Sub

実行結果:

なお、掛け算・割り算は足し算・引き算よりも先に実行されるであったり、カッコを使用することで計算順序を制御できるといったルールは一般的な算数式のルールと同じです。

変数を使用してみる

変数とは、プログラム上で使用できるデータ保存用の入れ物です。

変数を使用することで、計算した結果の値を保存して何度も再利用するといったことができます。

VBA において変数を利用する上では以下を覚えておいてください。

  • 変数には「」があり、「型」によって格納できるデータの種類が決まっている
  • 変数を利用する前には「変数宣言」を行う

変数の型

変数には様々な「型」がありますが、最初は以下だけ覚えておいてください。

  • Integer 型 → 整数を格納する型
  • String 型 → 文字列を格納する型

変数宣言の仕方

変数を使用する前に変数宣言をしますが、変数宣言は以下の構文で記述します。

  • Dim <変数名> as <変数の型>

変数には名前を付ける必要がありますが、以下のルールに従ってください。

  • 変数名には[半角/全角]文字、アンダーバー(_)を利用可能で、そのほかの記号やスペースは使えない
  • 変数名の先頭が数字やアンダーバー(_)であることはNG
  • 長さは半角 255 文字まで
  • 予約語(VBAで既に使用されている名前)は使用できない

例えば、mynumber という名前の Integer 型の変数を宣言する場合は以下のようになります。

    Dim mynumber As Integer

また、mystring という名前の String 型の変数を宣言する場合は以下のようになります。

    Dim mystring As String

変数に値を格納する

変数に値を格納する場合は以下のように「=」を使用して記述します。

変数への値の格納
  • <変数名> = <値>

変数へ値を格納することを、値の代入とも呼びます。

例えば、Integer 型の変数 mynumber を宣言し、その mynumber に 1 + 1 の計算結果を格納するマクロ例は以下です。

Sub test()
    Dim mynumber As Integer
    mynumber = 1 + 1
End Sub

メッセージボックスを使用して変数の値を表示することができます。上記マクロ例に、mynuber の値をメッセージボックスで表示する処理を追加してみます。

Sub test()
    Dim mynumber As Integer
    mynumber = 1 + 1
    MsgBox mynumber
End Sub

このマクロを実行すると以下が表示されます。

変数 mynumber に格納された値、つまり 1 + 1 の計算結果が表示されています。

String 型の変数には文字列を格納できます。

以下のマクロ例は、String 型の変数 mystring を宣言し、その mystring に「こんにちは」という文字列を格納した後、メッセージボックスで mystring の値を表示します。

Sub test()
    Dim mystring As String
    mystring = "こんにちは"
    MsgBox mystring
End Sub

このマクロを実行すると以下のメッセージが表示されます。

上記のマクロ例は変数を使うまでもない単純な処理内容でしたが、処理が複雑になると変数の活用場面が増えてきます。

エラーを発生させてみよう

既に気付いているかもしれませんが、VB エディタではプログラムを1行書くごとに自動で構文チェックが行われます。

そしてもし構文エラーがある場合はエラーメッセージが表示されます。

例えば、以下のように Dim mynumber as まで入力した後に Enter を押下してみます。

すると以下のようにエラーメッセージが表示されます。同時に対象行が赤文字で表示されます。

上の例では変数宣言の構文で変数型が入力されていないためエラーになります。

この構文チェック機能があるため、マクロ作成時にはすぐに構文エラーに気づくことができます。

Excel のワークシートのセルの値を取得したりセットしたりしよう

VBA では Excel のワークシート上のセルの値を取得して使用したり、セルに値をセットしたりすることができます。

まず、シート名が「Sheet1」のシートを作成してください。(新規作成した Excel ファイルではデフォルトで存在しているはず)

次に以下のマクロを作成して実行してみてください。(以下をコピペでOKです。)

Sub test()
    
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = "こんちには"
    
End Sub

マクロ実行後、Sheet1 シートを表示してみてください。以下のように、A1 セルに「こんにちは」と入力されているはずです。

次に以下のようなマクロを作成してください。(以下をコピペでOKです。)

Sub test()
    
    MsgBox ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value
    
End Sub

このマクロを実行すると以下のようにメッセージが表示されるはずです。

上記の例で察したかもしれませんが、シートとセルの値の指定方法は以下の構文です。

シートとセルの値の指定方法
  • ThisWorkbook.Sheets("<シート名>").Cells(<行番号>, <列番号>).Value

細かく上記構文の構造を確認します。

ThishWorkbook の部分で「このマクロが保存されているファイル」を指定したことになります。

ThisWorkbook.Sheets("<シート名>") の部分までで、「このマクロが保存されているファイルの<シート名>シート」を指定したことになります。

ThisWorkbook.Sheets("<シート名>").Cells(<行番号>, <列番号>)の部分までで、「このマクロが保存されているファイルの<シート名>シートの【<行番号>行、<列番号>列】のセル」を指定したことになります。

セルに対して.Valueと指定すると「そのセルの値」という意味になります。

上記内容から、<シート名><行番号>, <列番号> の部分に入力する値を変えることによって、対象シートや対象セルを自在に変更することができます。

条件式を理解しよう

条件式とは、計算結果が(True)または(False)になる式のことです。

例えば以下のような式が条件式です。

1 < 2
4 < 10
100 = 100
a <= b

これらの式は計算結果が True か False かの何れかになります。

条件式では以下の比較演算子が使用されます。

比較演算子
  • < : より小さい
    • 例: a < b → a は b より小さい
  • > : より大きい
    • 例: a > b → a は b より大きい
  • = : 等しい
    • 例: a = b → a は b と等しい
  • <= : 以下
    • 例: a <= b → a は b 以下
  • >= : 以上
    • 例: a >= b → a は b 以上
  • <> : 等しくない
    • 例: a <> b → a は b と等しくない

条件式の値を確認してみましょう。

まず以下のマクロを実行してみてください。

Sub test()
    MsgBox 10 < 20
End Sub

以下の表示となるはずです。

条件式は 10 < 20 でした。10 は 20 より小さいため、条件式の値としては真(True)となります。

次にマクロを以下のように変更して実行してみてください。

Sub test()
    MsgBox 10 > 20
End Sub

以下のように表示されるはずです。

条件式は 10 > 20 でした。ただ 10 は 20 より小さいため、条件式の値としては偽(False)となります。

この条件式は、条件分岐処理(If文)やその他さまざまな場面で使用することになります。

文字列の比較

比較演算子の =<> は、数値同士の比較においては「(値が)等しい」「(値が)等しくない」という意味で用いられましたが、文字列同士の比較にも使用されます。

例えば、以下のマクロを実行してみてください。

Sub test()
    MsgBox "あいうえお" = "あいうえお"
End Sub

結果は以下のようになります。

「あいうえお」と「あいうえお」は等しい文字列のため、結果は True となります。

また以下のマクロを実行してみてください。

Sub test()
    MsgBox "あいうえお" <> "あいうえお"
End Sub

結果は以下のようになります。

「あいうえお」と「あいうえお」は等しい文字列のため、結果は False となります。

条件分岐を理解しよう

条件分岐とは、条件式の評価結果に基づいて処理内容を変えることです。

If 文【最もシンプルな条件分岐】

条件分岐をするためには If 文 を利用します。

まず以下のマクロを実行してみてください。

Sub test()
    Dim mynumber As Integer
    mynumber = 5
    
    If mynumber < 10 Then
        MsgBox "mynumberは10より小さい"
    End If
End Sub

このマクロを実行すると以下のメッセージが表示されます。

次に、上記マクロの mynumber への値の代入部分で 5 ではなく 20 を代入するよう変更してください。

Sub test()
    Dim mynumber As Integer
    mynumber = 20
    
    If mynumber < 10 Then
        MsgBox "mynumberは10より小さい"
    End If
End Sub

この変更後のマクロを実行すると、何も表示されないはずです。

変数 mynumber の値によって処理内容が変わったことになります。これが条件分岐です。

条件分岐のために利用した If 文の構文は以下です。

If 文の構文

If <条件式> then
    【<条件式>が True の場合の処理内容】
End If

条件式が True の時のみ何らかの処理を行いたい場合に、この If 文を利用します。

If ElseIf 文【複数の条件式がある場合】

複数の条件式を続けて評価し、最初にTrueとなった条件式に対応する処理を実施することができます。

この場合は If ElseIf 文を利用します。

まず以下のマクロを実行してみてください。

Sub test()
    Dim mynumber As Integer
    mynumber = 3
    
    If mynumber < 5 Then
        MsgBox "mynumberは5より小さい"
    ElseIf mynumber < 10 Then
        MsgBox "mynumberは10より小さい"
    End If
    
End Sub

このマクロを実行すると以下のメッセージが表示されます。

次に、上記マクロの mynumber への値の代入部分で 3 ではなく 8 を代入するよう変更してください。

Sub test()
    Dim mynumber As Integer
    mynumber = 8
    
    If mynumber < 5 Then
        MsgBox "mynumberは5より小さい"
    ElseIf mynumber < 10 Then
        MsgBox "mynumberは10より小さい"
    End If
    
End Sub

このマクロを実行すると以下のメッセージが表示されます。

mynumber の値によって異なるメッセージが表示されたことが分かるかと思います。

If ElseIf 文を利用するとこのように条件式によって処理内容を変更することができます。

If ElseIf 文の構文

If <条件式1> then
    【<条件式1>が True の場合の処理内容】
ElseIf <条件式2> then
    【<条件式2>が True の場合の処理内容】
ElseIf <条件式3> then
    【<条件式3>が True の場合の処理内容】

End If

ElseIf ~ then は任意の数だけ記載することができる

If ElseIf 文を利用する際の注意点として、条件式は上側から順に評価されていき、一番最初に True となる条件式を見つけた時点で処理内容が決定され、以降の条件式は無視される点があります。このため、条件式の記載順序に注意してください。

If Else 文【条件式に合致しない場合の処理】

If 文または If ElseIf 文ですべての条件式が False の場合に何らかの処理を行いたい場合は、
If Else 文を利用します。

以下のマクロを実行してみてください。

Sub test()
    Dim mynumber As Integer
    mynumber = 8
    
    If mynumber < 5 Then
        MsgBox "mynumberは5より小さい"
    Else
        MsgBox "mynumberは5以上"
    End If
    
End Sub

実行結果として以下の表示になるかと思います。

上記マクロで記述していた条件式は mynumber < 5 でしたが、これに合致しない場合の処理が実行されています。

If Else 文の構文

If <条件式1> then
    【<条件式1>が True の場合の処理内容】
Else
    【<条件式1>が False の場合の処理内容】
End If

ElseIf ~ thenIf ~ then から Else の間に任意の数だけ追加することができる

以下のように、If Else 文には任意に ElseIf ~ then を追加することができます。

Sub test()
    Dim mynumber As Integer
    mynumber = 8
    
    If mynumber < 5 Then
        MsgBox "mynumberは5より小さい"
    ElseIf mynumber < 10 Then
        MsgBox "mynumberは10より小さい"
    Else
        MsgBox "mynumberは10以上"
    End If
    
End Sub

繰り返し処理を理解しよう

マクロの処理の中で、同じような処理を繰り返すことが良くあります。

同じような処理を繰り返す場合に、VBA で同じ内容を何度も繰り返し記述することも可能ですが、非常に効率が良くないです。

ここで、繰り返し処理を行うための For 文があります。

まずわかりやすい例として、以下のようなマクロがあったとします。

Sub test()
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
    MsgBox "こんにちは"
End Sub

上記マクロはメッセージボックスで「こんにちは」と表示することを10回繰り返します。

このマクロを For 文を使用して書き換えると以下のようになります。

Sub test()
    Dim i As Integer
    
    For i = 1 To 10
        MsgBox "こんにちは"
    Next
End Sub

上記2つのマクロで処理内容は全く同じですが、マクロの内容としては For 文を使用した方がより短くすっきりしているかと思います。

For 文の構文は以下の通りです。

For 文の構文

For <変数> = <開始値> To <限界値> Step <増分>
    【1回の繰り返しで実行する処理内容】
Next

Step <増分> の記述を省略した場合、Step 1 が指定されたことになる

For 文の動作:

  1. <変数> に初期値として <開始値> が代入される
  2. <変数> の値が <限界値> 以下(<増分> が正の値の場合)または <限界値> 以上(<増分> が負の値の場合)である場合に、For 文内の処理を実行する。
    そうでない場合は For 文の処理を終了する。
  3. For 文内の処理を実行した後、<変数> = <変数> + <増分> として <変数> の値を更新する
  4. 上記2.-3.を繰り返す

シンプルな例で For 文の動きを説明します。

以下のマクロは、For 文で繰り返しメッセージボックスを表示し、その内容として変数 i の値を表示します。

Sub test()
    Dim i As Integer
    
    For i = 1 To 10
        MsgBox "i の値:" & i
    Next
End Sub

"文字列1" & "文字列2" のように、2つの文字列の間に & を入れると2つの文字列を結合できます。

このマクロを実行すると、以下の順でメッセージが表示されます。

i の値:1
i の値:2
i の値:3
i の値:4
i の値:5
i の値:6
i の値:7
i の値:8
i の値:9
i の値:10

上記の実行結果から、変数 i の値は 1 から開始され、For 文内の処理が一度実行されるたびに変数 i の値が 1 加算され(マクロ内で For 文の Step を省略しているので 1 ずつ加算される)、i の値が 10 のときの繰り返し処理を行った後、For 文の処理が停止したことが分かります。(For 文 を抜けた時点で i の値は 11 になっている。)

For 文で使用されている変数の値が、For 文内の処理が繰り返されるごとに変わっていくことを利用することが良くあります。

例えば、以下のマクロでは、シートのA1セルからA10セルまでの値に「こんにちは」をセットするマクロです。

Sub test()
    Dim i As Integer
    
    For i = 1 To 10
        ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value = "こんにちは"
    Next
End Sub

このマクロを実行すると、以下のようにシートのセルに値がセットされます。

For 文の変数 i とセルの行数を対応付けることで、For 文を使用して一定範囲内のセルに値をセットしています。

オブジェクトとプロパティを理解しよう

Excel VBA マクロを作成していると「オブジェクト」というものを扱う必要が出てきます。

オブジェクトとは、プロパティと呼ばれる様々な値を持つ「もの」です。

例えば、以下の「もの」はオブジェクトです。

  • ワークブック
  • ワークシート
  • セル、セル範囲
  • 行、列

さらに、例えばセルについていうと以下の値は「プロパティ」です。

  • セルの値
  • フォント
  • 背景色
  • 罫線

プロパティは、<オブジェクト>.<プロパティ> = <値> のように、ピリオド「.」を使用した形式で記述します。

例:

  • セルの値
    • Cells(i,j).Value = <値>
  • セルのフォントカラー
    • Cells(i,j).Font.Color = <色>
  • セルの背景色
    • Cells(i,j).Interior.Color = <色>
  • セルの罫線のスタイル
    • Cells(i,j).Borders.LineStyle = <罫線スタイル>

ここで実際にマクロを動かして確認してみましょう。

まず「Sheet1」という名前のシートを作成してください。※Excelファイル作成直後であれば存在するはず

次に以下のマクロを作成し、実行してみてください。

Sub test()
    
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = "こんにちは"
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Font.Color = RGB(255, 0, 0)
    
End Sub

RGB(255, 0, 0) は RGB 形式で色を指定する際の記述方法です。

マクロ実行後「Sheet1」シートを表示してみると、以下のようにA1セルに赤字で「こんにちは」と入力されているはずです。

次に以下のようにマクロの2行目の RGB(255, 0, 0) の部分を RGB(0, 255, 0) に変えてから実行してみてください。

Sub test()
    
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Value = "こんにちは"
    ThisWorkbook.Sheets("Sheet1").Cells(1, 1).Font.Color = RGB(0, 255, 0)
    
End Sub

マクロ実行後「Sheet1」シートを表示してみると、以下のようにA1セルに緑字で「こんにちは」と入力されているはずです。

オブジェクトを変数に格納する

オブジェクトを変数に格納することができます。

このとき、変数の型はそのオブジェクト用の型である必要があります。

例えば、シートのセルを格納するためには Range 型の変数が必要になります。

以下のマクロでは、Range 型の変数 mycell に対してセルを格納した後、変数を利用してセルのプロパティを設定しています。

Sub test()
    Dim mycell As Range
    
    Set mycell = ThisWorkbook.Sheets("Sheet1").Cells(1, 1)
    
    mycell.Value = "こんにちは"
    mycell.Font.Color = RGB(255, 0, 0)
    
End Sub

注意点として、オブジェクトを変数に格納する際の構文は以下です。

オブジェクトを変数に格納する
  • Set <変数> = <オブジェクト>

オブジェクトの場合は先頭に Set が必要となるため注意してください。

良く扱うオブジェクトとしてワークシートがあります。

ワークシートを格納する変数の型は Worksheet です。

以下のマクロでは、Worksheet 型の変数 mysheet にワークシート ThisWorkbook.Sheets("Sheet1") を格納して使用しています。

Sub test()
    Dim mysheet As Worksheet
        
    Set mysheet = ThisWorkbook.Sheets("Sheet1")
    
    mysheet.Cells(1, 1).Value = "こんばんわ"
    mysheet.Cells(1, 1).Font.Color = RGB(0, 0, 255)
    
End Sub

ワークシートに関して良く使うプロパティとしては、シート名を示す Name があります。

以下のマクロでは、ワークシート mysheet のシート名をメッセージボックスで表示します。

Sub test()
    Dim mysheet As Worksheet
        
    Set mysheet = ThisWorkbook.Sheets("Sheet1")
    
    MsgBox mysheet.Name
    
End Sub

このマクロを実行すると、以下のメッセージが表示されます。

Sheet1

シート上の図形がクリックされたらマクロを実行させてみよう

ここまでは作成したマクロの実行は VB エディタ上で行っていましたが、マクロを実行するためにユーザに VB エディタを開いて実行してもらうのは現実的ではありません。

エクセルのユーザがシート上でマクロを実行できるのが理想です。

ここで、シート上の図形がクリックされたらマクロを実行させるようにすることができます。

例を示しながらその方法を説明します。

まず、サンプルマクロとして以下のマクロを作成しておきます。

Sub test()
    MsgBox "こんにちは"
End Sub

次に、シート上に四角形の図形を追加し、テキストを「マクロ実行」とします。

次に、追加した図形上で右クリックし、「マクロの登録」をクリックします。

すると以下の画面が表示されます。リストの中に作成済みマクロのリストが表示されるため、実行させたいマクロをクリックして選択した後、「OK」をクリックします。

これで準備は完了です。シート上の図形をクリックしてみてください。するとマクロが実行され、メッセージボックスが表示されるはずです。

このように、シート上に図形を設置して実行ボタンとして使用することは良く行われます。


あわせて読みたい
Excel VBA マクロ作成用情報まとめ 【初学者向け情報】 【Excel VBA】初心者からマクロを作成できるようになるまでの学習ロードマップ 【Excel VBA マクロ独学者・初心者向け】VBA 学習の第一歩【このペー...
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

とあるエンジニアです。

当ブログでは Excel VBA のマクロ作成に役立つ情報を中心に情報展開しています。

Excel VBA マクロを使いこなして時短し、人生の質『QOL』を高めていきましょう。

プロフ画像:Copyright (C) SQUARE ENIX CO., LTD. All Rights Reserved.

目次