この記事を読んでいただいている方の中には、エクセルを覚えてきて、もうすこしステップアップしたいな、と考えている方も多いかもしれません。
そんな方にオススメしたのが、「マクロ」です。
VBAとも呼ばれたりするマクロ。
なんだか難しそうな印象があるかもしれませんが、使い始めるとこんなに心強いものはないんです!
習得するには、練習が必要不可欠ですので、本やwebで調べたら、ぜひ実践してみましょう!
そこで、本記事では、これまでの記事を紹介しつつ、「脱EXCEL初心者へステップアップ!マクロを楽しく練習する方法」について解説します。
具体的には、「後出しじゃんけん」のマクロを組みながら楽しく練習していきます。
目指せ「エクセルマン」です!
お楽しみに!
この記事の内容
1.マクロを扱えるように準備する
こんにちは。エクセルマン・ブリーダーのしもむぎ(@re_znd13)です。
この章では、エクセルでマクロを扱えるように準備をします。
エクセルは、初期設定でマクロを扱いやすいようにはなっていないんですね。
2つのステップで、マクロを扱えるよう準備をしましょう。
1.1 マクロを呼び出すための開発タブを表示する
エクセルにはウィンドウの上部にリボンが用意されていますね。
ファイル、ホーム、挿入といったタブの並びに、開発というタブはありますか?
もし開発タブがあれば、このステップは飛ばして構いません。
ない方は、ファイル→オプション→リボンのユーザー設定と進み、メインタブの欄で開発という項目にチェックを入れましょう。
開発タブが表示されるはずです。
以下の記事で、詳しく解説していますので、こちらもぜひご参照ください。
参考:EXCELマクロの基本のキ!リボンに開発タブを表示する方法!
1.2 マクロ有効ブックとして保存する
エクセルのブック(ファイル)はいろいろな形式で保存することができます。
通常EXCELブックという形式で、xlsxという拡張子となります。
マクロを扱うブックはマクロ有効ブックという形式で保存する必要があります。
拡張子はxlsmとなります。
保存するときに、名前を決めると思いますが、ファイル名を入力するときファイルの種類というプルダウンに注意してください。
マクロを扱うときはそのプルダウンを開き、マクロ有効ブックxlsmを選択しましょう。
マクロを編集する前に、このようにマクロ有効ブックとして保存しておくことをオススメします。
以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参考:EXCELマクロの基本のキ!マクロ付ブックの保存形式に注意!
2.マクロを組んでみる
この章では、マクロを組む方法について解説します。
前章で準備した開発タブから、マクロというアイコンをクリックします。
マクロという小ウィンドウがポップアップしたでしょうか。
マクロ名という欄にsampleとかtestとか、適当な名前を入力して編集ボタンをクリックすると、マクロを編集するエディタが開きます。
以下のようなコードが書かれていると思います。
このSub~End Subの間の行に操作させる命令文を書き込んでいくことになります。
Sub sample()
End Sub
以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参照:EXCELマクロを動かそう!記録・実行・編集の3ステップ!
3.メッセージボックスを表示する
ここから命令文を書いていってみますが、この章ではメッセージボックスの表示について解説します。
メッセージボックスというのは、ユーザーにお知らせをしたりすることのできる小ウィンドウです。
自由にメッセージ等を表示させることができるんです。
ここではサンプルとして、以下のように記述してみてください。
MsgBoxというのがメッセージボックスを開きますよ、という命令で、その後の”(ダブルクォーテーション)で囲った部分が表示する文字列となります。
下の画像のようなメッセージボックスが現れるはずです。
Sub sample()
MsgBox "こんにちは。じゃんけんしましょう"
End Sub
以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参考:EXCELのVBAでのMsgbox使用方法!タイトルや改行も!
4.セルの値を取得・設定する
この章ではセルの値を取得する、設定するといったことをしてみましょう。
順に見ていきますね。
4.1 セルの値を取得する
セルの値を取得するというのは、ワークシート上のセルの中に入っている数値や文字列を、マクロに認識させるという操作です。
例えば、A1セルにグーという文字列が入力してあるとします。
それをマクロに認識させて、メッセージボックスに表示させてみましょう。
マクロでは、A1セルをRange(“A1”)もしくはCells(1,1)と表すことができます。
ここでは後者の記述方法を使ってみましょう。
以下のようなVBAコードで、A1セルの値(ここではグー)を取得して、メッセージボックスに表示させます。
実行すると、画像のようになるかと思います。
Sub sample()
MsgBox Cells(1, 1).Value
End Sub
4.2 セルの値を設定する
次にセルの値を設定してみましょう。
A1セルがグーですから、これに勝つ手のパーをB1セルに設定してみます。
VBAコードは以下です。
実行すると、パーという文字列がB1セルに入りましたね。
Sub sample()
Cells(1, 2).Value = "パー"
End Sub
前節と本節の内容は、以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参考:EXCELマクロでセルの値を操作する方法!取得と設定の基本
5.変数を設定する
この章では、変数の設定について解説します。
前章では、セルの値を直接メッセージボックスに表示させたりしていましたが、変数を設定することで、その値に対して処理を加えることができるのです。
変数を扱うには、最初に宣言が必要です。
変数の名前と型を決めて、マクロにこういう変数だよと教えてやるんですね。
変数の名前はaやbなどの記号でもOKですし、以下のVBAコードのように、日本語を使ってもOKです。
型はasの後に設定します。
Stringというのは文字列を意味しています。
整数はLong、少数はSingleという3種類を覚えておけば、まずはOKかと思います。
Sub sample()
Dim 自分の手, 相手の手 As String
自分の手 = Cells(1, 1).Value
相手の手 = Cells(1, 2).Value
MsgBox 自分の手 & "と" & 相手の手
End Sub
上記のVBAコードを実行すると、以下のようになりました。
グーやパーという文字列をマクロ内では使っていませんが、セルから値を取得して、メッセージボックスに表示させることができました。
変数の設定については、以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参考:VBAでセルの値を変数にして掛け算等の数値計算をする方法!
6.繰り返し処理をする
この章では繰り返し処理を解説します。
これまではA1セル、B1セルと、1行目のセルに処理をしてきましたが、ここでは5行分のA1~A5まで、B1~B5までのセルについて、1行目にしていた処理を繰り返しさせてみましょう。
繰り返し処理にはいくつか方法がありますが、今回はFor~文を使ってみることにしましょう。
5行分繰り返しをさせたいと、繰り返し回数が明確になっているときはFor~文が便利なんです。
For~文の構文は以下のVBAコードを参考にしてください。
iという整数型の変数を設定し、iを1から5まで変更させながら繰り返すという処理です。
ループの1回当たりの処理は、自分の手、相手の手という変数の設定をして、それをメッセージボックスに表示させています。
i行目のセルを取得しているというのが肝ですね。
Sub sample()
Dim 自分の手, 相手の手 As String
Dim i As Long
For i = 1 To 5
自分の手 = Cells(i, 1).Value
相手の手 = Cells(i, 2).Value
MsgBox 自分の手 & "と" & 相手の手
Next
End Sub
繰り返し処理については、以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参考:EXCELのVBAで繰り返し処理する方法!重要な2構文を解説
7.if文で条件分岐させる
エクセルのワークシート上でも大活躍のif文ですが、マクロでも同じく、大活躍する機能です。
この章では、if文を使って条件分岐をさせてみましょう。
ここでは後出しじゃんけんをするマクロを組みたいので、手に応じてそれに勝つ手を判断したいと思います。
グーのときはパー、チョキのときはグー、パーのときはチョキという具合ですね。
VBAでのif文はワークシート上での記述と違うので注意が必要です。
以下のVBAコードでは、自分の手(A列)がグーのときB列に相手の手としてパーを入れます。その他の条件としてチョキのときにはグー、パーのときにはチョキを入れるという条件を設定し、それ以外の場合(空欄など)の場合には空欄を返すようにしました。
Sub sample()
Dim 自分の手, 相手の手 As String
Dim i As Long
For i = 1 To 5
自分の手 = Cells(i, 1).Value
If 自分の手 = "グー" Then
相手の手 = "パー"
Cells(i, 2).Value = 相手の手
ElseIf 自分の手 = "チョキ" Then
相手の手 = "グー"
Cells(i, 2).Value = 相手の手
ElseIf 自分の手 = "パー" Then
相手の手 = "チョキ"
Cells(i, 2).Value = 相手の手
Else
Cells(i, 2).Value = ""
End If
Next
End Sub
if文での分岐については、以下の記事でも、詳しく解説していますので、ぜひご参照ください。
8.ユーザーに手を入力してもらう
この章では、本当のじゃんけんのように、手を入力してもらうようにしていきます。
ここで使うのはインプットボックスと呼ばれるものです。
以下のようなポップアップを出し、グー、チョキ、パーのいずれかを入力してもらうのです。
VBAコードは以下です。
Sub sample()
Dim 自分の手, 相手の手 As String
Dim i As Long
For i = 1 To 5
自分の手 = InputBox("じゃんけん・・・")
If 自分の手 = "グー" Then
相手の手 = "パー"
MsgBox "ぽん!" & 相手の手 & "です。私の勝ち!"
ElseIf 自分の手 = "チョキ" Then
相手の手 = "グー"
MsgBox "ぽん!" & 相手の手 & "です。私の勝ち!"
ElseIf 自分の手 = "パー" Then
相手の手 = "チョキ"
MsgBox "ぽん!" & 相手の手 & "です。私の勝ち!"
Else
MsgBox "ちゃんと出してください"
End If
Next
End Sub
このVBAコードでは5回勝負ということで5回繰り返しをしています。
また、グーチョキパー以外の手が入力されたらちょっと怒ってくれるようにしました笑
例えばグーを入力すると、以下のようなメッセージボックスが表示されます。
インプットボックスについては、以下の記事でも、詳しく解説していますので、ぜひご参照ください。
参考:EXCELのVBAでMsgboxにユーザ判断を入力する方法!
9.まとめ
本記事では、「脱EXCEL初心者へステップアップ!マクロを楽しく練習する方法」を解説しました。
後出しじゃんけん、実際に後出しされると怒っちゃいそうですけど、自分で作ってみると楽しく遊べますよ。
アレンジして、何を出しても負けてくれる優しいマクロを作ってもよいかも。
ぜひいろいろ試してみてくださいね!