【超初心者向け】Excelでマクロを使う準備まとめ

「VBA(マクロ)をやってみたいけど、何から始めればいいか分からない」
そんな方に向けた、いちばん最初の記事です。
この記事では、コードを書く前に必要な準備だけを説明します。
難しいことは一切言いません。真似していけばOK!
私がVBAを始めた時なんどもつまづいてた部分をまとめてわかりやすくします!

VBAって何?何ができる?

VBA(Visual Basic for Applications≒マクロ)は、Excelの操作を自動化するための仕組みです。
関数に似てるところもあるし、全然違うところもありますが、
ただExcel関数とVBA、習得難易度はほぼ一緒だと私は思います。
やり方さえわかればどんどん複雑なこともできるようになりますよ!

何ができるの?

・同じ作業をまとめて実行する(繰り返しのコピペや同じシートが何個もある場合など)
・ボタン1つで処理をする(プログラムの起動はいろんな種類のボタンやアクションからできます)
・ミスを減らす(ヒューマンエラーはなくなります)

といったことができるようになります。
日々の業務でルーティン化しているものなど規則性がある作業はVBAが得意としているところです!プログラム一つで作業時間が1時間→5秒なんてこともざらにあります。

開発タブを表示する(最重要)

最初に「開発」タブを表示します。

  1. Excelを開く
  2. 「ファイル」→「オプション」
  3. 「リボンのユーザー設定」
  4. 「開発」にチェックを入れる
  5. 「OK」をクリック

開発にチェックを入れると開発タブがでてきます。

マクロの保存形式を知る

VBAを使うExcelファイルは、
通常の「.xlsx」では保存できません。
マクロを使う場合は、
「Excelマクロ有効ブック(.xlsm)」で保存します。

注意

保存形式が違うだけで、コードが消えてしまうこともあるので注意しましょう。

VBAエディタを開いてみる

VBAを書く画面を開いてみます。

・「開発」タブ →「Visual Basic」
・または Alt + F11

これで、VBAエディタが表示されます。

左上にある「プロジェクト」画面はブックの構成が見れるところです。
VBA Project(Book1(ブック名))
 ↳Microsoft Excel Objects
  ※オブジェクトとはブック、シート、など構成されている『部品』みたいなものです
  ↳Sheet1(Sheet1(シート名))
  ↳ThisWorkbook(このワークブック)

この下の空欄の部分で右クリック→挿入→標準モジュール
で、標準モジュールのModule1を作成します。

この黄色で囲まれている部分が標準モジュールの「Module1」のプログラムを書く場所です。

プログラムのルール

ルール1:最初と最後に書く文句

Sub ここにプログラムのタイトルを入れる()

’ここで処理

End Sub

Sub ○○(プログラムのタイトル、わかりやすいのがいい) ()⇐かっこの中身はなし、意味は考えなくてOK
End Sub(〆の文句、End~はいろいろ登場してくるので仲間が多いことだけ覚えといてください)

ルール2:ブック名、シート名を変数に入れる

これはやる癖をつけておくと後々エラーを起こしづらくする方法です。
オブジェクトを変数に入れる時はDimで変数を宣言⇒Setでオブジェクトを指定します

Dim 変数名 as オブジェクト名
Set 変数名 = オブジェクトの指定

白猫

???…なんて?

変数とは任意の名前(好きな名前でOK)の箱みたいなものと考えてください。
わかりやすく名前のついた箱にブック名やシート名を入れて(Setする)、
どのブックのどのシートかを指定するときなどに使います。
変数に入れなくてもできますが、ヒューマンエラーが起きやすいので変数に入れるのをオススメします。

変数に入れるとなにがいいの?

A1に色をつけたいとします

変数に入れない場合

ThisWorkbook.Worksheets("このシート").Range("A1").Interior.Color = vbYellow ’A1の背景を黄色に塗る

ThisWorkbook.Worksheets(“このシート").Range(“A1")
実行してるワークブック内の「このシート」というシートの「A1」セルを指定します。

メリット

・書く量が少ない
・一発で何をしているか分かりやすい
・短い処理ならラク

デメリット

・同じ指定を何度も書くとミスしやすい
・名前変更に弱い
・処理が長くなると読みにくい

変数に入れる場合

Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Worksheets("このシート")

ws.Range("A1").Interior.Color = vbYellow ’A1の背景を黄色に塗る

え…プログラムが長くなってるじゃん…って思うかもしれません。
が、プログラムが長くなればなるほど効いてきます。

ws.Range(“A1")
実行してるワークブック内の「このシート」というシートの「A1」セルを指定します。

例えば今回はA1セルの色を変えるだけでしたが、A4セルもC1セルもとなると何回も場所を指定しないといけないので
変数に入れない場合は下記のように書きます。

ThisWorkbook.Worksheets("このシート").Range("A1").Interior.Color = vbYellow ’A1の背景を黄色に塗る
ThisWorkbook.Worksheets("このシート").Range("A4").Interior.Color = vbYellow ’A4の背景を黄色に塗る
ThisWorkbook.Worksheets("このシート").Range("C1").Interior.Color = vbYellow ’A1の背景を黄色に塗る

変数にいれると下記のようにまとめることが可能です。

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

ws.Range("A1").Interior.Color = vbYellow ’A1の背景を黄色に塗る
ws.Range("A4").Interior.Color = vbYellow ’A4の背景を黄色に塗る
ws.Range("C1").Interior.Color = vbYellow ’C1の背景を黄色に塗る

メリット

・同じシートを何度も使える
・コードが読みやすくなる
・修正が1か所で済む
・バグが減る

デメリット

・最初は行数が増える
・「Set」が分かりにくい

Point

変数は後からいろいろでてきますが、とりあえずワークブックとワークシートをSetすればOKです

ワークブック、ワークシートのSetのルール

ワークブックの場合(変数名:wb)

ワークブックの種類変数の宣言Set方法備考
プログラムが入っているワークブックDim wb As WorkbookSet wb= ThisWorkbookマクロが保存されているExcelファイルのこと。
他のブックを開いてもかわらないため安定している。
今、画面を操作しているワークブックDim wb As WorkbookSet wb= ActiveWorkbook今アクティブ(選択中)のブック。
クリックや切り替えで変わるので不安定である。

※wbは任意の変数

ワークシートの場合(変数名:ws)

ワークシートの種類変数の宣言Set方法備考
左からn番目にあるシートDim ws As WorksheetSet ws=Worksheets(n)nは数字を入力
Worksheetsにする
ワークシート名で指定Dim ws As WorksheetSet ws=Worksheets(“このシート")“このシート"にシート名を入力(“"で囲む)
Worksheetsにする
今、画面を操作しているワークシートDim ws As WorksheetSet ws = ActiveSheet今アクティブ(選択中)のシート。
クリックや切り替えで変わるので不安定である。

※wsは任意の変数

プログラムを書いてみる

では以上を踏まえて簡単なプログラムを書いてみます。
セルA1~A3に文字を入れていきます。

セルを指定するときは

Worksheet名.Range(“A1")

のようにRange(“")でセル名を囲みます。
(なんで""がいるかは割愛します)
そして

指定したセル="入れたい文字"

で文字が入ります。

Sub はじめの一歩()

Dim wb As Workbook
Dim ws As Worksheet

Set wb = ThisWorkbook
Set ws = wb.Worksheets("Sheet1")

ws.Range("A1") = "これで"
ws.Range("A2") = "あなたも"
ws.Range("A3") = "プログラマー"


End Sub

実行してみる

プログラムを保存してExcelに戻ります。
開発→マクロを選ぶとプログラムの一覧がでてきます。

任意のマクロ名を選び実行を押します。

プログラムが実行され、A1~A3に文字が入力されました。

VBAを体系的に学びたい方は、以下の教材もおすすめです。

効率化を目指すも何していいかわからない方!!VBAを勉強すると普段使っているExcelがめちゃくちゃ便利になります。

  • ・独学で圧倒的効率化めざしてるならこれ

  • ・1st stepなら12,000円でVBAの基礎講座がオンラインで受講できる!!!

    わからないところはチャットで聞けますよ~