エクセルVBA初心者入門!最初に知っておけば爆速で覚えれたのに!

エクセルVBA初心者入門書として知っておきたいことをまとめてみた

エクセルを仕事で使い始めて、VBAを学ぶようになったタケイチですが、初心者の時に知っていたらもっと早く上達していたのではないか?

と思えるようなことがあったので、自分なりの初心者がまずはやった方が良い入門編を用意してみました。

VBAは、理解しやすい構造であるため、一番最初の言語に向いていますが、何事も最初は難しいものです。

 

VBAとは

ざっくりとで構わないんですが、VBAとは言語です。PythonやC言語といったような意味ですね。

VBAはマイクロソフトオフィスで使えるプログラミング言語!

VBEの環境設定

VBAと似た言葉のため、ちょっと整理します。

ただし、言葉の意味などはそんなに重要ではありません。

そのため、覚えなくても全然かまわないし、何度もエクセルにVBAを書いたりしていれば自然とやるようになります。

VBAとVBEの違い

VBA(ヴィジュアル・ベーシック・アプリケーションズ)
→プログラミング言語
VBE(ヴィジュアル・ベーシック・エディター)
→プログラミング言語を書く環境

VBEの開き方

では、VBEというエディターを開く方法をお伝えします。

ほとんどの方が開いた経験がないと思います。僕も、VBAをやるまでは、マクロは聞いたことがあるけど、どこに書けば良いのかすらわかっていませんでした。

VBEの開き方は2種類あります。

Excelのメニューバーから開く方法

”開発”タブに、VBEを開くボタンがあるんですが、最初から”開発”タブが選択できる状況の人は少ないです。

開発タブを選択できるようにする!

ファイル→オプション→リボンのユーザー設定→開発にチェックを付ける→開発タブをクリック→Visual Basicをクリック

リボンにて開発タブを追加するため_ファイルをクリック
リボンにて開発タブを追加するため_オプションをクリック
リボンにて開発タブを追加するため_開発タブをアクティブにする

開発タブが選択できるようになりますので、OKボタンをクリックしてください。

リボンにて開発タブを追加するため_開発タブの追加確認とVisualBasicをクリックするとVBEが起動する

Visual Basicをクリックすると、VBEが開きます。

短縮キーから開く方法

Alt + f11を押してください。Altを押しながらf11を押せばOKです。

短縮キーの方が圧倒的に楽なので、短縮キーで覚えた方が良いです。

会社で使うPCや会社でいつも使っているPCじゃないと、開発タブを毎回設定しなくてはいけない・・・

僕なりのVBEおすすめ環境を公開

VBEを開くと、こんな画面が出てきます。

VBEの初期設定_初期状態

この状態で書き始めても良いのですが、使い続けていくうちに変更を絶対にします。

僕のVBE環境は下の画像です。

VBEの初期設定_イミディエイトウィンドウ追加_ローカルウィンドウ追加_タスクバーに「編集」を追加
アレンジした内容

イミディエイトウィンドウを追加

ローカルウィンドウを追加

タスクバーの「編集」を追加

文字色の変更

イミディエイトウィンドウ

イミディエイトウィンドウは、デバッグをするときに使います。

また、Stopをかけた状態で変数が何を取得しているかを調べるときにも使います。

VBEの初期設定_イミディエイトウィンドウを追加する方法

ローカルウィンドウ

ローカルウィンドウは、変数のステータスを確認するときに使っています。イミディエイトの方が使う頻度は高いかもしれませんが、ローカルウィンドウを基準にイミディエイトウィンドウを活用したりもするので、私にとっては非常に重要なウィンドウです。

VBEの初期設定_ローカルウィンドウを追加する方法

コードウィンドウ

コードウィンドウに実際に書き込む項は、もうちょっと先にします。

まずは設定と言うところにフォーカスして、文字色の変更や背景色の変更をします。

とりあえず、標準モジュールを立ち上げてください。

標準モジュールの出し方

コードウィンドウの文字色の変更

エディターの設定タブを押してください。

タスクバーの「編集」の機能と追加方法

編集はコメントアウトの時に使うだけです。もとに戻すときにも使います。

表示されていた方が楽なので使いやすさをお伝えします。

VBEの初期設定_タスクバーに「編集」を追加する方法

VBAの書き方

さて、いよいよVBAVBEに書き込むところまで来ました。しかし、どこに書き込めばよいのかわからない。

まずは、どこに書き込むのかを説明していきます。

VBAを書き込むモジュールについて

モジュールとは、VBEというノートに一枚一枚織り込まれている紙だと思ってもらえば良いと思います。その紙にも種類があり、適正な種類の紙を選択していく必要があります。

なんか難しそうだなぁ~って思わなくて大丈夫です。「標準モジュール」くらいしか最初のうちは使いません

モジュールの種類については、もうちょっと詳しいページを準備しております。

モジュールの種類は複数あるが、標準モジュールを覚えておけば十分すぎる

オブジェクトモジュール、ユーザーフォームモジュール、標準モジュール、クラスモジュールの用途と表示場所

標準モジュールの追加方法

標準モジュールの出し方

こんな感じで、簡単です。場所を覚えるまでが大変だと思います。一緒に頑張ってみましょう。

SubとFunctionの違いについて

モジュールの書き方が分かったら、モジュール内のルールについて確認しておきましょう。

Subには2種類の宣言方法がある

厳密に言うと3種類ですが、2種類にまとまります。

2種類の違いは、「公開」と「限定公開」に分類されるイメージです。

PublicとPrivateの違い

Public Sub(パブリックサブ)とSub(サブ)は、「公開」

Private Sub(プライベートサブ)は、「限定公開」

こんなことを言ってもわかりにくいので、ちょっとした例を出します。

宣言の仕方について_PublicSub_Sub_PrivateSub

4つの宣言をしています。

エクセルに移って、開発→挿入→ボタンをクリックして、ボタンを作成してください。

ドラッグするだけでも良いですし、ダブルクリックでも作れます。

ボタンの作成方法

宣言の仕方について_PublicSub_Sub_PrivateSub_マクロをボタンに登録する_ボタンの作成方法

すると作成前に、ポップアップが出てきます。Private Subで宣言した「ddd」が出てきません。

後々いやでも覚えるので、基本は「Public Sub」を使用しておけば問題ありません。

PublicとPrivateの違い

限定公開の「ddd」がマクロの指定に出てこない。

Functionは、関数のイメージ

SubFunctionの違いは、返り値があることです。

Subだと返り値を受け取ることができません。しかし、Functionでは受け取ることができます。

最初はそこまで使わないと思いますので、Functionがある。ということを覚えておいていただければ大丈夫です。

SubとFunctionの違いは?

返り値がある!Excelの関数と同じような働きと思っていればOK!

ちょっと練習してみましょう

練習問題に最適なのはどんなのかなぁ?と思ったんですが、英語と同じように頻出単語というのがVBAにもあります。

なので、まずは良く使われるコードの理解をしてから、VBAを学ぶきっかけにもなっているであろうビジネスなどへの応用をしやすいコードで進めてみましょう。

よく使うコードのまとめ

今回紹介したいコードは2つあります。

IFForというコードですが、何を言っているのかわからない。と思っても全然平気です。

IFは、分岐。Forは、ループ。そんなキーワードを頭においてこの先を読んでみてください。

IFの使い方

IFのコードの使い方は簡単です。

条件式には種類がありますが、プログラミングの用語をそのまま覚えるんではなくて、日本語の文章だと思ってやってみたら簡単に覚えられると思います。

とりあえず、こんな形であると認識しておいてください。

IFの使い方記事を準備中

Forの使い方

ループの実行はForだけではありませんが、一旦一つだけの方が分かり易いと思いますので、基本はForで組み立てられるかを考えてみると作りやすいです。

Forの使い方記事を準備中

初級者入門に向けた練習問題に挑戦!

何かと汎用性が高いであろうと思う。練習問題を用意しました。もちろん、これで覚えられるなんて思いませんし、わからないところはコメントにどんどん書き込んで貰えると非常に助かります。

練習問題のチェックポイント

IFとForの感覚をつかんでほしい!

標準モジュールに対してのSubの役割をイメージしてほしい!

Functionの使い方は覚えなくて良い!理解出来たら便利

VBAを覚えてどんなエクセルを作ろうか考えやすい例題にしてみたつもり!

あまりごちゃごちゃ言っても最初は覚えきれないと思います。

僕はVBAで感動した一番のポイントは、「列や行を足さずに書き換えができること」です。指定の文字から指定の文字へ変換させられる。これが一番のストロングだと思っています。

動作を確認

  • 特定の列から特定の値を探して特定の値に書き換える

ボタン1をクリック

VBA入門編_完成形①

ポップアップウィンドウが開くので、テキストボックスに検索したい値を入力して、「OK」をクリック

VBA入門編_完成形②

検索した値の代わりに入力するワードをテキストボックスに入力し、「OK」をクリック

VBA入門編_完成形③

メッセージボックスが表示されて処理が終了

というのが、表面の動きになります。

A列に書き込まれていること。そして、5行目から始まっていることを覚えておいてください。 

さて、では裏側の解説に行ってみましょう!

VBAコードの説明

では、ここから裏側になります。

VBAのコードを日本語で読み上げてみると

検索ワードと置換ワードをメッセージボックスで確認して、最終行までのループを実施して、検索ワードに一致していた時に置換ワードに置換する!

となります。

いっぺんにコードを見てもわからない部分が多いと思いますので、先に分割して説明します。

これから4分割されたそれぞれの担当部門が登場します。

最終的には全体のコードを作っていきますので、そのコードを標準モジュールに入れてみてください。

第一段階の説明

モジュールの一番最初で変数を宣言すると、そのモジュール全体で使えます。

とりあえず、変数には型などがあります!

Stringは、文字列。Worksheetは、ワークシート。Integerは、整数(小さい方)。

変数の型の詳細は、現在ページを準備しております。少々お待ちください。

第二段階の説明

宣言した変数に、格納していきます。

格納するだけであり、初期設定と書いているのでイメージできているとは思いますが、補助的なSubです。補助的なSubはボタンに登録したくないので、Privete Subで宣言しております。

変数の格納をイメージした記事も準備しておりますのでしばらくお待ちください。

第三段階の説明

役割は、メインコードです。

ここで、初期設定をお願いしたり、どういうシナリオなのかを明記している部分になります。

ボタンに登録したいので、Public Subで宣言しております。

第四段階の説明

正直、Functionの使い方としては簡単すぎますが、頻出するタイプのものであれば、Functionはめちゃくちゃ便利です。

検索ワードと置換ワードを引っ張らなくてはいけないので、同じコードを2回書いても良いんですが、面倒ですよね?

そんな時にFunctionを使っておけばめちゃくちゃ楽ですよ。って感じです。

コードの全体