![見出し画像](https://assets.st-note.com/production/uploads/images/94626793/rectangle_large_type_2_ae56e325fa53590334a35f800017422f.jpeg?width=1200)
非エンジニアによる非エンジニアのためのExcel VBA入門
比較的ご要望が多かったので、VBAについての初学者向けの教材を作成いたしました。
この記事は、「今日明日のちょっとした作業を効率化する」というコンセプトで記述しております。
0. はじめに
私はエンジニアではありません。VBAの経験は7-8年程度ですが、VBA以外の言語は書けません。この記事は、非エンジニアによる非エンジニアのための学習方法というコンセプトです。
また、エンジニアが求めるような厳密さや正しさは追及しておりません。エンジニアになりたい方は、きちんとしたエンジニアが書いた教材を使ったほうが良いでしょう。
一方で、VBAは、個人または部署内程度でしか使われないことが多く、仕事としてVBAのコーディングをしている人は、ほとんどいないのではないかと思います。エンジニアからVBAを教わろうとしても、そもそもVBAのエンジニアが存在しないという問題があります。
仮にVBAについてちょっと知っているエンジニアに相談をしても、「Pythonがおすすめだ」とか「Javascriptのほうができることが多い」という、非エンジニア視点では明らかにズレた回答が返ってくることがほとんどです。
さらに、非エンジニアのビジネスパーソンならお分かりのとおり、エンジニアでない従業員が、会社のPCでプログラミングをするのは容易ではありません。開発環境を整えるのための上申だけでも、大仕事になってしまいます。
その点、VBAは優れています。ふだん使っているエクセルやパワーポイントの内部で完結しているので、面倒な申請などは不要でしょう。余計なことを考えずに、手元のちょっとした作業を今日から効率化することができます。上司に黙って自分の業務を効率化すれば、仕事に少しゆとりができるでしょう。
要するに、VBAというのは、今日明日のちょっとした作業を効率化するために勉強をするものなのです。腰を据えて専門家を目指すような分野ではありません。このことを前提として、「今日明日のちょっとした作業を効率化する」ことを目的としてVBAを学ぶには、どうしたらよいのかをテーマとして、この記事を執筆しました。
1. この記事の内容
目標としているレベル
この記事の目的は以下のとおりです。特に重要なのは3点目です。VBAの操作方法について、調べる習慣をつけることが最大の目的です。
・日々の個人作業を効率化することを目的としてVBAの勉強をはじめようと考えている方(以下、「読者」という)に向けて、VBAのごく初歩的な知識と学習方法を説明すること。
・読者が、この記事の読了後に、「『選択中のセルに計算式が含まれているかどうかを判定し、計算式なら黒文字に、計算式でないなら青文字にする』というショートカット」というレベルのマクロを作成できるようになること。
・読者が、上記と類似したレベルのマクロの作り方について、自分で調べられるようになること。もしくは、頑張って調べれば分かるというマインドになること。
コンテンツ
本記事のコンテンツは以下の5つです。
VBAの基本的な考え方
代表的なアルゴリズム(IF文、For文)
ユーザーフォームの基礎
ショートカットキーの作成
その他学習の指針
まずは、エクセルのオブジェクト構造などの基本的な考え方を説明しています。
次に、代表的なアルゴリズムとして、IF文とFor文を紹介します。この手のアルゴリズムをすんなり理解できるかどうかは、かなり個人差があるようです。すんなり理解できなかった場合は、苦労して理解してください。
3点目はユーザーフォームです。こちらは純粋なプログラミングではなく、VBAに特有な機能だと思います。このため、基本的な内容を解説しています。
4点目は、この記事の読者層(もともと財務モデリングなどに関心のあった方)が強い関心を持っている部分だと思いますので、掘り下げて説明しています。
5点目は、学習の指針についてです。VBAに限った話ではありませんが、ITスキルを身に着けるために重要なのは、調べる習慣を身に着けることです。そのことについて、事例などを交えながら説明しています。
2. VBAを学習するための前提条件
VBAは、エクセルでできることを自動化するという性質のものです。したがって、エクセルできないことはVBAでもできないと思ったほうが良いでしょう。
言い換えると、VBAで作業を効率化するためには、ある程度エクセルで効率的に作業ができていることが前提になります。エクセルが苦手な方は、まずエクセル本体を得意になることが先決です。
この記事でもエクセル本体については問題なく使えていることを前提としています。
3. 事前準備|作業の準備
まずは、各種名称を覚えて、作業環境を整えます。
マクロ、VBA、VBE
マクロとは、エクセルの機能の名称です。VBAは、マクロを記述するためのプログラミング言語の名前です。したがって、「VBAという言語でマクロを作成する」という言い方になります。VBAはVisual Basic for Applicationsの略です。
VBEは、Visual Basic Editorの略です。VBAを記述するためのメモ帳のようなもので、エクセルやパワーポイントの内部に搭載されています。エクセルの画面上で、Alt + F11 を押すことで起動できます。
開発タブの表示
はじめてマクロを扱う場合、VBAを記述するための設定を行う必要があります。オプション設定から開発タブを表示します。開発タブには、マクロを作成するための機能が集約されています。
![](https://assets.st-note.com/img/1672493516964-i2hcRcKLsK.png?width=1200)
VBEの設定
次に、VBEの初期設定を行います。VBEは、初期設定のままでは非常に見づらいので、使いやすいように整理します。(再掲:VBEは、Alt + F11で起動できます。)
表示タブから、プロジェクトエクスプローラとイミディエイトウィンドを表示しましょう。それ以外は、最初のうちは必要になりません。画面をシンプルにするためにも、この2つのみを表示するのがおすすめです。
![](https://assets.st-note.com/img/1672493712321-oAJMSNe8ZN.png?width=1200)
次に、エディターの色などを設定します。ツールタブ → オプションから、以下のように設定します。最初はすべてにチェックを入れるのがおすすめです。
![](https://assets.st-note.com/img/1672493752652-rCp9nk97hy.png?width=1200)
エディターの色やフォントは、設定タブから変更します。前景が文字の色、背景がエディターの色です。フォントはお好みで構いませんが、Courier Newなどが読みやすいと思います。フォントサイズもここから設定できます。
![](https://assets.st-note.com/img/1672493820236-ueGvkcFhf7.png?width=1200)
以下、おすすめの設定です。
コメント:前景をグレーに
構文エラーの文字:前景を黒、背景を赤に
キーワード:前景をあずき色に
識別子:前景を黄緑色に
上記のように設定すると、こんな感じの色合いになります。好みで変えてよいと思います。
![](https://assets.st-note.com/img/1672494165535-v2SwfRkGWB.png?width=1200)
4. 事前準備|VBAの基礎知識
「今日明日のちょっとした作業を効率化する」という目的ですので、座学は最低限にします。ただ、最低限は必要だと考えております。
プロジェクト構造
マクロにおいては、プロジェクトの中にモジュールがあり、モジュールの中にプロシージャ(Sub / Function)があるという構造になっています。
![](https://assets.st-note.com/img/1672494906197-hJYzbux7IX.jpg)
いわゆる「マクロ」とは、プロシージャを指します。当面の目標は、便利なプロシージャを作ることになります。
標準モジュール
最初のうちは、「コードは標準モジュールに記述する」と覚えておくとよいと思います。標準モジュールは、VBE内の挿入タブから作成できます。
![](https://assets.st-note.com/img/1697345523033-F7zYVsW6DR.png)
クラスモジュールについては、使えると便利ですが、初心者向けでは機能です。ユーザーフォームについては後ほど解説します。
サブルーチンとファンクション
サブルーチン(Sub)とファンクション(Function)の違いは、文字で書くよりも実際に使ってみたほうが理解しやすいと思います。
簡単に言えば、サブルーチンがいわゆるマクロで、ファンクションはユーザー定義関数です。ファンクションは、ワークシート内で使用したり、ほかのサブルーチンに組み込んで使用します。
サブルーチンの実行方法
作成したサブルーチンは、実行タブから実行することができます(F5キーでも可)。ファンクションは、単体では実行することができません。
![](https://assets.st-note.com/img/1672495310828-xDlCBp1yBd.png)
この点も、実際にやってみたほうがわかりやすいため、現時点では「ふーん」と思っていただければ十分です。
また、マクロの作成中は、1行ずつ実行する機能(=ステップイン)を使うことのほうが多いです(F8キーでも可)。ステップインやブレークポイントなどは、実際に使ってみると分かりやすいと思います。
![](https://assets.st-note.com/img/1672495403882-INLIVAMHLo.png)
VBAの学習全般に言えることですが、使ったことのない機能を理解するのはまず不可能です。とりあえず使ってみましょう。使い方がわからないときは調べましょう。
マクロの学習においては、とりあえずやってみるということが非常に重要です。「仕組みは分からないけど、こう動くものだ」という知識の積み重ねで、徐々にコードが書けるようになります。
マクロの記録
エクセルの開発タブには、マクロの記録という機能があります。この機能を使うことで、効率的に学習することができます。
![](https://assets.st-note.com/img/1672495566589-cRUr5gkypA.png?width=1200)
リーダブルコード
マクロは、作成してからも微修正を繰り返すことが多いです。このため、後で見直したときに、読みやすくなっていることが重要です。
エクセル本体でもよくあることですが、エクセルが得意でない人ほど、場当たり的に作業をしてしまい、後で見直したときに何の作業をしたのかが分からなくなってしまうものです。マクロの作成では、エクセル本体での作業以上に、この点を意識する必要があります。
後から見直したときにわかりやすくなるように、読みやすくて分かりやすいコードを書くようにしましょう。最初のうちは、長すぎるくらいにコメントを残しておくとよいです。
5. 事前準備|オブジェクト構造の基本
ここからが実際のコードを使った学習です。
ここから先は
¥ 3,000
Amazonギフトカード5,000円分が当たる
この記事が気に入ったらチップで応援してみませんか?