【エクセルVBAの作り方】初心者でもわかるように図やサンプルコードを使って解説
エクセルVBAってどんなことができるの?始めるにはどうすればいいの?
こんな疑問にお答えします。
結論から言うと、
エクセルVBAを使えば毎日行っている単純作業を自動化することが可能。そして、エクセルが入っていれば今すぐにでもVBAを始めることができる
です。
でも、プログラミングって難しそう。。。
このように感じてVABを始めていない方は本記事を参考にVBA学習をスタートさせてみてください。
初心者でもVBAを設定できる機能「マクロを記録する」を使えば、
普段のエクセル操作をそのままプログラミングに変換
することができます。
「マクロを記録する」機能で変換したコードを参考にすれば効率よくVBA学習を進めることが可能です。
この記事では、
VBA初心者の方がスムーズに学習をスタートできる内容
にまとめました。
コピペで使える簡単なサンプルコード多数掲載しているので、実際に手を動かしながら読み進めてみてください。
エクセルVBAスキルを身に付けて面倒なエクセル作業を自動化してしまいましょう。
目次
エクセルVBAとは?はじめての人でも分かる基本解説
ExcelVBA(Visual Basic for Applications)は、
エクセル操作を自動操作するためのプログラミング言語
です。
「マクロを記録する」機能を使って簡単な作業を自動化したり、VBAコードを書いてより複雑な処理を実現したりできます。
エクセルVBAを使いこなせるようになれば、
人間の思考が伴わない機械的な作業のほとんどを自動化
することが可能です。
例えば、
別シートの情報を転記して印刷をする、指定するフォルダ内の写真をいっきに貼り付ける、など
ルーティーン作業を一瞬で処理できるようになります。
VBAの基本概念と動作の仕組み
VBAは、エクセルに組み込まれたプログラミング機能です。
エクセルのセルに数式を入れるように、VBAはワークシートやブックを操作する命令を書くことができます。
例えば、
以下のような簡単なコードでセルに文字を入力できます
Sub HelloWorld()
Range("A1").Value = "こんにちは!"
End Sub
上記サンプルコードは
A1セルに「こんにちは!」というテキストを入力する
という意味です。
これだけでは手入力した方が早いですが、
このようなコードを積み重ね書いていくにつれて作業効率がどんどんアップ
していきます。
エクセルVBAで何ができるのか具体例で解説
VBAを使えば、日々の業務を大幅に効率化できます。
VBAが設定される代表的な業務がこちら
- 毎月の売上データの集計
- 複数のシートからのデータ抽出
- 定型フォーマットの作成
- 写真データの貼り付け
- エクセルからPDFへの変換
実務で導入した『写真をキレイに貼り付けるVBA』がこちら
指定するフォルダ内全ての写真を一瞬でキレイに配置して貼り付けることができます。
関連記事「エクセルで写真の貼り付けを自動化するマクロ」では写真を貼り付けるVBAの作り方を詳しく紹介しています。
プログラミング未経験でも始められる3つの理由
VBAはプログラミング未経験の方でも始めやすい言語です。
その3つの理由がこちら
- マクロ機能で操作を記録できる
- 日本語に近い命令文が多い
- エラーメッセージが分かりやすい
特に「マクロの記録」機能は、実際の操作をそのままコードに変換してくれるので、プログラミングの基本を学ぶのに最適です。
【エクセルVBA】作り方の基礎!実践形式で学ぶ手順
プログラミングは実際に手を動かしてイメージを固めることが上達の近道です。
ここでは、VBAの基本的な使い方から、実際のコードの書き方まで順を追って解説していきます。
エクセルを開いて、一緒に試しながら読み進めてください。
マクロを有効にする
最初にやるべきことが、
マクロを使える環境に設定する、マクロを保存できる形式に変更する
です。
この2つの設定をしなければVBAを扱うことができません。
マクロを有効にする方法がこちら
「ファイル」→「オプション」→「トラストセンター」「トラストセンターの設定」→「マクロの設定」→「VBAマクロを有効にする」
マクロを保存できる形式に変更する方法がこちら
「ファイル」→「名前を付けて保存」→「Excelマクロ有効ブックを選択」→「名前を入力して保存」
VBAエディタの開き方と基本的な使い方
VBAエディタは、Alt + F11キーを押すか、開発タブからVisual Basicボタンをクリックして開きます。
VBAエディタ画面がこちら
エディタ画面の左側にはプロジェクトエクスプローラー、右側にはコードを書く場所があります。
最初は新しく標準モジュールを作成しVBAコードを書いていくと良いでしょう。
標準モジュールの作成方法がこちら
「左側のプロジェクトエクスプローラーで右クリック」→「挿入」→「標準モジュール」
モジュールを選択し、右側にVBAコードを書いていきます。
下記のサンプルコードを入力し、「F5キー」を押下してVBAを実行してみてください。
Sub FirstProgram()
MsgBox "VBAプログラミングを始めましょう!"
End Sub
実行結果はこちら
マクロの記録方法とコードの確認方法
マクロの記録は、VBA学習の第一歩です。
開発タブの「マクロの記録」をクリックし、実際の操作を行うとその操作がVBAコードとして自動的に記録されます。
例えば、セルの色を変更する操作を記録すると以下のようなコードが生成されます。
Sub Macro1()
Range("A1").Select
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End Sub
すぐにVBAを導入したいのであれば、
「マクロの記録」 → 毎日のルーティーン作業をする → 「記録終了」
で設定することができます。
よく使われるVBAコード
VBAを作成する際によく使われるVBAのコードがこちら
- Range(セルの指定)
- Cells(行列番号でのセル指定)
- For Each(繰り返し処理)
- 関数IF
これらのコードを組み合わせるだけでエクセル作業の効率をアップさせることができます。
複数のセルを処理する基本的なサンプルコードがこちら
Sub 繰り返し処理()
For i = 1 To 100
IF Cells(i,1) = "" Then
Cells(i,2) = "データなし"
Else
Cells(i,2) = "データあり"
End If
Next i
End Sub
上記サンプルコードは
A列が空欄の場合、B列に「データなし」を入力。A列に値がある場合、B列に「データあり」を入力。これを1行目から100行目まで繰り返す。
という内容です。
初心者がつまずきやすいポイントと解決方法
初心者がよく直面する問題として、変数の宣言忘れ、オブジェクトの参照設定、エラーハンドリングがあります。
特に、プログラミング初心者なら変数やオブジェクトの必要性をイメージすることからスタートすることになるでしょう。
いろんなVBAを開発している私でも「変数の宣言」を忘れることが多々あります。
私のような「完璧なコードは求めていない!思い描いた処理を実行できればいい!!」と考える方におすすめのサンプルコードがこちら
Sub ErrorHandling()
On Error Resume Next
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets("存在しないシート")
If ws Is Nothing Then
MsgBox "シートが見つかりません"
End If
On Error GoTo 0
End Sub
上記サンプルコードは
ブック内に「存在しないシート」というシートがない時、「シートが見つかりません」というメッセージを表示する
という内容です。
2行目のOn Error Resume Nextでエラーが発生しても無視して処理を続け、8行目のOn Error GoTo 0でエラー無視を解除
しています。
【実践編】簡単なVBAプログラムを作ってみよう
ここからは実践的なVBAの作り方をご紹介していきます。
実際のエクセル業務で使える簡単なVBA作成から始めて、徐々に複雑な処理にチャレンジしていきましょう。
繰り返し処理で複数のセルに値を入力するVBA
以下のサンプルコードは、
指定した範囲に連番を入力するVBA
です。
Sub AutoNumber()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Value = i
Cells(i, 2).Value = "項目" & i
Next i
End Sub
実行結果がこちら
B列に「項目」+番号が入力されます。
データ集計を自動化するVBAコードの書き方
下記のサンプルコードは
データ集計を自動化するVBA
です。
Sub SummarySales()
Dim lastRow As Long
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
Range("E1").Value = "合計"
Range("E2").Formula = "=SUM(B2:B" & lastRow & ")"
End Sub
実行結果がこちら
B列の値を集計し、E2セルに合計を表示しています。
エラーが出たときの対処法と確認ポイント
エラーが発生したときは、まずデバッグモード(F8キー)でコードを1行ずつ実行し、問題の箇所を特定します。
こんな感じ
複雑なVBAを作成すると、
コードが長くなり、「F8」キーで1行ずつ確認するのは時間がかかる
という問題が生じます。
こんな問題を解決してくれる方法がこちら
上図のように
処理を強制的に停止するブレークポイント(印)を付けてデバックする
という方法です。
- 長いVBAコードの後半部分にエラーが存在している場合、中間点にブレークポイント(印)を設置
- 「F5」キーを押下してブレークポイント(印)までスキップする
- ブレークポイント(印)からは「F8」キーで1行ずつエラーを確認する
これはめちゃくちゃ使えるテクニックなので是非実践してみてください。
【エクセルVBAの作り方】よくある質問と解決策
VBA学習中によく出てくる疑問や問題について実践的な解決方法を説明します。
ここで紹介する内容は、
実際の現場で多くの方が経験する課題とその対処法
です。
今抱えている課題をVBAで解決していきたい!と考えている方は是非参考にしてみてください。
デバッグの方法と効率的なテスト手順
効率的なデバッグには、イミディエイトウィンドウの活用や変数の監視が重要です。
デバッグに役立つサンプルコードがこちら
Sub DebugExample()
'デバッグ用のメッセージ出力
Debug.Print "処理開始"
'プログラムの状態確認
Dim i As Long
For i = 1 To 3
Debug.Print "ループ" & i & "回目"
'ここでブレークポイントを設定できます
Next i
'エラー発生時の情報収集
On Error GoTo ErrorHandler
Exit Sub
ErrorHandler:
Debug.Print "エラー番号:" & Err.Number
Debug.Print "エラー内容:" & Err.Description
End Sub
エラー内容をVBAを使って出力してくれるのでデバックの効率アップに繋がります。
作ったVBAを他のPCでも使えるようにする方法
VBAプログラムを他のPCでも使えるようにするには、適切な保存方法と互換性の確保が重要です。
異なる環境での動作を保証するためのサンプルコードがこちら
Sub MakePortable()
'ファイルパスを動的に取得
Dim currentPath As String
currentPath = ThisWorkbook.Path
'ブックの保存設定
ThisWorkbook.SaveAs _
Filename:=currentPath & "\自動化ツール.xlsm", _
FileFormat:=xlOpenXMLWorkbookMacroEnabled
'マクロの有効化確認
If Application.EnableEvents = False Then
Application.EnableEvents = True
End If
End Sub
上記のコードは
「ファイルパスを取得する」「マクロが有効な形式でブックを保存する」「マクロが有効になっているかチェックする」
という内容です。
転勤で使用するパソコンが変更になる、社外の方とVBAが設定されたエクセルデータのやりとりをする、など頻繁にPC環境が変化する方は是非活用してみてください。
まとめ:VBAを作るのは意外と簡単
「エクセルVBAを作る」は難しく感じるかもしれませんが、意外と簡単です。
「変数」や「オブジェクト」など専門的な知識がなくても「マクロの記録」機能を使えばサクッと効率化VBAが作れちゃいます。
「VBA編集画面の開き方」と「コードを書く場所の設定」さえできれば、いつでもVBAを作り始めることが可能。
ネットや参考書で紹介されているコードを実際に書く → 実行結果を確認する → 業務内容に合わせてアレンジする
これを繰り返すだけでもVBAスキルはどんどん上がっていくはずです。
私は、「写真の貼り付け作業を自動化したい!!」という思いからVBA学習をスタートさせ、
「変数」や「オブジェクト」などの専門知識を勉強することなく、ネットと参考書の情報を組み合わせて写真を貼り付けるVBAを開発しました。
最初に作った写真を貼り付けるVBAはこんな感じ
VBA学習をスタートさせたばかりの素人でも写真貼り付け作業の効率を大幅にアップできた!!
当時作成した写真を貼り付けるVBAは下記のサイトからダウンロードできます。
これからVBA学習をスタートさせたい!と考えている方は参考にしてみてください。
この記事を読んで、
「VBAやってみたい!」「いろんなエクセル業務の自動化に挑戦したい!!」
と感じてくれた方はエクセルVBAの情報を定期的に配信しているメルマガへの登録を検討してみてください。
エクセル業務で苦しんだ私の経験を元に、実務で役立つVBA情報をお届けしています。
ディスカッション
コメント一覧
まだ、コメントがありません