膨大な行のデータを高速で処理するVBAとは?使い方を徹底解説!


毎月膨大なデータ計算に時間がかかってしまう・・・
VBAを使って解決できるようになりたいな・・・
VBAの具体的な書き方、実行方法などが知りたい・・・

Excelを使って仕事をしている人の中には、膨大な計算・抽出作業に時間がかかっている人もいるのではないでしょうか。少しでも楽にするためにセル関数を使う方が多いですが、使いすぎてExcel自体が重たくなってしまうケースはよくありますよね。

こんにちは!フリーランスエンジニア兼テックライターの脇坂です。

この記事では、Excelの作業に時間がかかって困っている人向けに、VBAを書くための2つの方法、具体的なVBAの使い方について徹底的に解説します!!

VBAの基礎については本記事について知りたい方は、先に以下記事を見てみてくださいね!

この記事はこんな人のために書きました。

  • これからVBAを使えるようになりたい方
  • Excelの膨大な計算・抽出作業に時間がかかっている方

目次

ExcelでVBAを書く2つの方法

はじめに、ExcelでVBAを書く2つの方法について解説します。

VBAは、大きく分けて2つの作り方があります。

1. マクロの記録で自動でVBAのコードを作る方法
2. VBAを1から自分で書いて作る方法

それぞれ詳しく解説しますね。

マクロの記録でVBAを書く方法とは?

まず、マクロの記録でVBAを書く方法についてです。

マクロの記録とは、Excelの操作を保存してVBAに変換する機能です。たとえば、シートAの値をA1セルの値をコピーし、シートBのB1セルにペーストする処理をマクロの記録で保存すると、次のようなVBAが自動でできます。

Sub A1セルをB2セルにコピー()
'
' A1セルをB2セルにコピー Macro
'

'
    Sheets("シートA").Select
    Range("A1").Select
    Selection.Copy
    Sheets("シートB").Select
    Range("B1").Select
    ActiveSheet.Paste
End Sub

「Sheets("シートA").Select ~ Selection.Copy」までの処理でシートAのA1セルをコピーし、「Sheets("シートB").Select ~ ActiveSheet.Paste」の処理でシートBのB2セルにペーストしています。このように、操作を保存してVBAのコードを作ることができるのです!

普段のExcel操作で同じ操作をしている作業があれば、マクロの記録で即自動化できます。マクロの記録の具体的な方法は以下で詳しく解説しているので、使ってみたい方はぜひ見てみてくださいね!

VBEで直接コードを書く方法とは?

次に、VBEで直接コードを書く方法について解説します。

先ほどと異なり、1からVBAのコードを書いてマクロを作ります。作り方は次のとおりです。

1. 開発タブのVisual Basicを選択し、VBEを開く

Visual Basicの場所

2. 挿入タブの標準モジュールを選択

標準モジュール選択

3. コードウィンドウで「Sub マクロ名」を押してエンターキーを押す

マクロ名を入力してエンター

4. 「Sub マクロ名 ~ End Sub」の間に作りたい処理をVBAで書く

マクロの処理を書く方法

標準モジュールというマクロを作るための箱を用意し、Subでマクロを作ってから処理を書いていくイメージです。VBAのさらに詳しい書き方、使い方については以下で詳しく解説しています!

ただ、「VBAの処理ってどうやって書けばいいんだ?具体的な書き方とかが知りたいな・・・」と思った方もいるのではないでしょうか。そんな方向けに、用途別にVBAの書き方がわかる情報をまとめたので、ご紹介しますね。

VBAでセル操作する方法

まず、VBAでセル操作する方法についてです。ここからは、処理のイメージ + 簡単な解説 + 詳細がわかる記事リンクの流れで解説していきます!

セルのデータを取得・書き込む方法

1つ目は、セルのデータを取得・書き込む方法についてです。

データ入力作業を自動化するときに便利な方法です。Excelは別の資料、ブック、シートを見ながらデータ入力するケースはよくありますよね。VBAの難易度も低いので、最初に覚えておくと便利です!


■自動化できる処理イメージ

  • 〇〇セルにデータを入力する操作
  • シートAのデータを、シートBに書き込む方法

セルのデータをコピーする方法

2つ目は、セルのデータをコピーする方法についてです。

データ入力と同じように、セルのデータをコピぺする作業はよくありますよね。書き方を覚えるだけでちょっとした作業は自分で自動化出来るようになります。頻度がとても高いので、覚えておくと便利です。


■自動化できる処理イメージ

  • 〇〇セルのデータを△△セルにコピペする作業
  • シートAのデータを、シートBに書き込む方法


VBAでセル・シート・ファイルをコピー(値、書式のみも解説)
更新日:2024年3月1日

【ExcelVBA入門】PasteSpecialメソッドで形式を選択して貼り付ける方法
更新日:2024年3月1日

セルのデータをクリア・削除する方法

3つ目は、セルのデータをクリアする方法についてです。

データ入力・コピーしたあと、不要なデータを消すときによく使います。値を消すクリア、セルごと消す削除をそれぞれ覚えておくと応用が効くのでおすすめです!


■自動化できる処理イメージ

  • コピペ・入力などで不要なデータを消すとき


【VBA入門】行・列の削除とクリアをする方法
更新日:2024年3月29日

セルのデータを検索する方法

4つ目は、セルのデータを検索する方法についてです。

必要な情報を調べてから使うケースはよくありますよね。請求書番号が「A00001」のデータを使うようなケースで、セルの位置を検索する方法を覚えておくと便利です!


■自動化できる処理イメージ

  • セルのデータを検索するとき

VBAでシート操作する方法

次は、シート操作についてご紹介します!

指定したシートをアクティブにする方法

1つ目は、指定したシートをアクティブにする方法についてです。

シートを指定してセルのデータをコピー、変更するケースはよくありますよね。シートを指定するために、アクティブ化する方法を覚えておくと便利です!


■自動化できる処理イメージ

  • シートを指定したデータ入力・抽出・コピペ・削除

アクティブシートを操作する方法

2つ目は、アクティブシートを操作する方法についてです。

シートをアクティブ化したあとは、具体的な操作方法を知りたいですよね。シート名の変更、セル操作、行列操作など、具体的な書き方を覚えておくのがおすすめです!


■自動化できる処理イメージ

  • アクティブシートの名称・セル操作・行列操作

シートを追加する方法

3つ目は、シートを追加する方法です。

元のデータに手を加えずに、新しいシートを使うケースはよくありますよね。シート追加方法を覚えておくと他の操作がしやすくなるため、覚えておくと便利です!


■自動化できる処理イメージ

  • 元のデータを変えずに計算したいとき

シートをコピーする方法

4つ目は、シートをコピーする方法です。

たとえば、Excelで請求書を作る場合は、請求書テンプレートシートをコピーしてデータ入力をします。「シートコピー → 一覧データを見てデータ入力 → PDF化して保存」のような流れになります。シートコピーして使うケースはよくあるので、覚えておくと便利です!


■自動化できる処理イメージ

  • 請求書テンプレートのように、テンプレートをコピーするとき
  • 一覧データとは別に詳細シートを作るとき

シートを削除する方法

5つ目は、シートを削除する方法です。

請求データ管理ツールなどを作る場合は、データ一覧シートだけでなく、請求管理番号ごとに詳細シートを作ります。誤って登録してしまったデータは、データ一覧だけでなく詳細シートも削除しますよね。このように、VBAで処理を作るときはシート削除機能もよく使うため、覚えておくと便利です!


■自動化できる処理イメージ

  • 一覧データ + 詳細シートのツールを作るとき

VBAでブック操作する方法

次は、ブック操作する方法についてご紹介します!

新しいブックを開く方法

1つ目は、ブックを開く方法です。

別のブックを操作する場合は、先にブックを開く必要があります。ブック操作の基礎として最初に覚えておくのがおすすめです!


■自動化できる処理イメージ

  • 別ブックにデータを書き込むとき
  • 別のブックからデータを取得するとき

ThisWorkBookとActiveWorkBookの違い

2つ目は、ThisWorkBookとActiveWorkBookの違いについてです。

複数ブックの処理を作るとき、マクロを動かすブックと、開いているブックを指定して処理を作りたいケースがよくあります。開いているブックのデータをコピーし、マクロを動かしているブックにペーストするような処理です。そのため、マクロを動かしているブック(ThisWorkBook)、アクティブになっているブック(ActiveWorkBook)の違い、使い方を覚えておくと便利です。


■自動化できる処理イメージ

  • 複数ブックで連携した処理を作るとき

ブックを保存する方法

3つ目は、ブックを保存する方法についてです。

修正を加えたら、ブックを保存しますよね。マクロを作るときは必須なので、覚えておくのがおすすめです!


■自動化できる処理イメージ

  • マクロでデータ更新したデータを保存したいとき

ブックを閉じる方法

4つ目は、ブックを閉じる方法です。

複数ブックで処理するときは、処理が終わった後にブックを閉じたいですよね。処理を作るためにブックを開く必要があるとはいえ、開きっぱなしにはしたくないはずです。そのため、ブックを閉じる処理を覚えておきましょう。


■自動化できる処理イメージ

  • 複数ブックの処理を作るとき

ブック操作まとめ

5つ目は、ブック操作のまとめです。

ブック操作についてそれぞれ解説してきましたが、ブック操作を一連の流れで覚えておくと理解が早いです。ブック開く、閉じる、作る、コピー、セルの値取得・書き込みなど、ブックを使った操作をまとめて覚えておくと便利です!


■自動化できる処理イメージ

  • 別ブックを操作する処理を作りたいとき

VBAでユーザーフォームを作る方法

次は、VBAでユーザーフォームを作る方法についてご紹介します!

テキストボックスを使う方法

1つ目は、テキストボックスを使う方法です。

テキストボックスは、画面でテキストを入力するボックスのことです。名前、金額など、直接値を入力するケースはよくあるので、覚えておくと便利です。


■使用するときのイメージ

  • 入力が必要な画面を使って処理を作るとき

コンボボックスを使う方法

2つ目は、コンボボックスを使う方法です。

コンボボックスとは、複数の選択肢から選んで使う画面の要素のことです。部署名、顧客名などは、登録済みのデータから選んだ方が楽ですよね。テキストボックスと同様よく使うので、覚えておくのがおすすめです。


■使用するときのイメージ

  • 部署名、顧客名など選択肢が多い項目を画面で使うとき

チェックボックスを使う方法

3つ目は、チェックボックスを使う方法です。

チェックボックスは、複数の選択肢からチェックをして選択する画面の項目です。得意な言語(VBA,PHP,Ruby,Python,JavaScript)のように複数ある場合に使えます。


■使用するときのイメージ

  • 複数の選択肢から複数選択する項目を画面で使いたいとき

オプションボタンを使う方法

4つ目は、オプションボタンを使う方法です。

オプションボタンは、複数の選択肢から1つだけ選択する画面の項目です。男性/女性、20代/30代/40代、消費税5%/消費税8%のように、選択肢から1つだけ選ぶときによく使います。


■使用するときのイメージ

  • 複数の選択肢から1つ選択させる項目を使いたいとき

VBAでエラー処理する方法

次は、VBAでエラー処理する方法です。

エラー処理は開発効率を上げるだけでなく、作った後のメンテナンス性も高めることができます。ツールは作って終わりでなく、運用保守をしていくケースがよくあるので、ツールを作るときは必須の考え方ですね。


■使用するときのイメージ

  • エラー箇所を特定し、対応しやすいVBAの処理を作るとき

Excelでよく使うVBAの処理

次は、Excelでよく使うVBAの処理についてです。

CSVファイルを読み込む方法

1つ目は、CSVファイルを読み込む方法です。

Excelでデータ管理をするときは、外部システムで作ったCSVファイルのデータを取り込むケースもありますよね。その作業を自動化することができます。


■自動化できる処理イメージ

  • 外部システムで作成されたCSVデータを取り込むとき

フォルダ・ファイルの操作方法

2つ目は、フォルダ・ファイルの操作方法です。

VBAはExcelだけでなく、ファイル・フォルダを操作することもできます。無駄なファイルを削除するツールや、プロジェクトに使うフォルダ構造を自動作成するツールを作ることができます。ちょっとした作業でも、自動化すれば工数削減につながりますよね。


■自動化できる処理イメージ

  • フォルダを整理するとき
  • フォルダを一括で作成したいとき
  • ファイル名を一括で変更したいとき

まとめ

今回は、VBAを書くための2つの方法、具体的なVBAの使い方について解説しました。

マクロの記録でVBAを試した後は、早めに自分で書いてみることがおすすめです。書いて動かしていくうちに、「もっと〇〇を自動化したい」と案が浮かんできますので。

ぜひ、VBAを作ってみてくださいね!

この記事を書いた人

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!
侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

目次