VBA入門の第一歩|挫折した方でもこの記事で少しわかった状態に!

VBA入門の第一歩|挫折した方でもこの記事で少しわかった状態に!
VBAは初心者でも容易に習得することができるプログラミング言語であり、エンジニアはもちろん、非エンジニアでも利用することができます。VBAを使えると日々の業務を効率化することができ、組織内でもVBAを使える人は重宝されるケースが多いでしょう。この記事では、VBAを少しずつ勉強していきたい方に向けてVBAの一歩目の知識と、ステップアップして学習する方法を解説していきます。この記事を読めば最低限のVBAはマスターとしたと言えますので、ぜひ参考にしてみてください。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

1.VBAとは?

まず、VBAの概要について紹介します。

VBAとは

VBAとは「Visual basic for applications」の略称であり、主にMicrosoftのOfficeシリーズに搭載されているプログラミング言語のことです。「basic」という名称の通り、他のプログラミング言語と比較して理解しやすく、学びやすいという特徴があり、エンジニアはもちろんのこと、非エンジニアの方も多く利用している言語です。Officeのパッケージ内にてデフォルトで提供されており、ExcelやWordといったOfficeツールを導入しさえすれば利用できることもVBAが普及している理由の一つです。

VBAでは、VBE(Visual Basic Editor)という開発エディターによりプログラミングを行います。VBEはExcelやWordから簡単に利用することができます。

マクロとは

VBAと並んで利用される言葉に、マクロというものがあります。マクロとは、Officeツール内で利用できる自動化機能のことを指します。

VBAとマクロは混同しやすいですが、両者はVBAを用いてマクロを作成するという関係にあります。マクロはVBAを用いる方法以外にも、操作内容を自動記録することによるプログラミングレスでの作成や、C#等の他のプログラミング言語でも作成することができます。よって、VBAはマクロを作成するための一つの手法という整理となります。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

VBAでできること

以下では、VBAでできることについて解説します。

定型処理の自動化

VBAを用いてマクロを作成することで、定型的な処理を自動化することができます。マクロを用いることで、例えばExcel上での集計処理や、Word形式で受け付けた申込書のリスト化などを行うことができます。定型処理を自動化することで、仕事における作業効率を大幅に改善することができます。特に何回も繰り返すような処理であれば、その効果は絶大なものとなります。

手作業で実施する作業のほとんどはVBAにより自動化することができるため、繰り返し行うような処理の多くはマクロ化を検討することができます。

Officeソフトの自動処理

VBAはOfficeシリーズと相性がよく、ExcelやWord以外にも様々なOfficeツールでの処理を自動化できます。例えば、Outlookを用いたメール送受信やTeamsへの自動投稿なども行えます。具体的には、特定の内容のメールに対して返信を自動で行ったり、会議予定をTeamsでリマインド通知したりするなど、業務の効率化に活用できます。

近年ではコロナ禍の影響もあり、テレワークが浸透しOutlookやTeamsといった遠隔でコミュニケーションが取れるツールの利用が増えています。これらのツールでの作業を自動化することで、テレワーク環境においてもコミュニケーションコストを低減させることができます。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

2.まずはVBAの環境を作ろう

VBAをこれから活用したい方は、まずVBAを作成するための環境を用意することができます。どこでVBAを入力すればいいのか、どうやってExcelやWordに反映すればいいのか解説していきますので、参考にしてみてください。

環境って何?

環境とは、VBAのようなプログラミング言語を入力するための仕組みのことを指します。VBAは複雑なコードになるので、Excelのセル上で関数のように入力しても動作しません。そのため、ExcelやWord側がVBAを理解できる画面で入力し、コードを適用させる必要があります。一般的なプログラミングの場合この環境構築に時間がかかりますが、VBAの場合は簡単に環境が用意されていますので、下で詳しく紹介します。

VBA環境の作成手順

ここでは、Excel上でVBAを利用するための準備方法について解説します。
まず、Excelを起動しオプション設定より「開発」タブを表示します。Excelのオプション設定は「ファイル」タブを選択し、左メニューにあるオプションを選択することで表示できます。オプション設定を表示したら、「リボンのユーザ設定」メニューを選択し、右欄より「開発」のチェックボックスにチェックを入れることで開発タブを表示できます。

開発タブを表示できたら、続いてVisual Basic Editorを起動します。Excelのリボンメニューから開発タブを選択し、「Visual Basic」のメニューをクリックします。これで、Visual Basic Editorを起動することができます。

Visual Basic Editorを起動したら、サンプルコードを入力して実行確認を行います。Excelの開発タブより、「マクロ」のメニューを選択します。マクロ名に「test」と入力して作成ボタンを押すことで、testマクロを作成できます。この画面上で実際にVBAの入力を行っていきます。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

3.簡単なVBAを書いてみよう

Visual Basic Editorが表示されたら、画面に以下のプログラムを入力し、メニューより実行してみましょう。

Sub test()
MsgBox ("Hello World!!")
End Sub
画面に「Hello World!!」というメッセージボックスが表示されたら、プログラムの実行は成功です。
これだけだと特に意味のないコードではありますが、VBAを使ってみる第一歩目としてはクリアです。ここから細かい構文や使い方を学んでいきつつ、VBAで業務効率化を進められるようになってみましょう。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

4.【超基礎】8つの構文をおさえてVBA入門卒業!

ここでは、基礎的なVBAの構文を解説します。ここで紹介する構文を使えるように慣れば入門編はクリアですので、ぜひ一度トライしてみてください。
なお、VBAを学習する際は実際に手を動かしながら挙動を確認してみることが大切です。細かなエラーや半角/全角のミスなど、読んでいるだけでは気づかない学びを得られますので、手を動かしながら自分の血肉にしてください。

①メッセージボックスの表示

MsgBox関数により画面上にメッセージボックスを表示することができます。構文は以下のとおりです。

Sub test()
MsgBox ("ここに表示したい文章を入力します")
End Sub
特定の文字や数字が入力された際に文字を表示したり、これから紹介する条件分岐などと組み合わせることで、指定した文字以外が入力された際に「エラー」と表示するといったことも可能です。また、メッセージボックス上で「はい」「いいえ」といったボタンを設置することもでき、さまざまな挙動の基礎になる関数です。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

②変数の利用

VBAでは、Dimを用いて変数を宣言することができます。変数とは、プログラム中で一時的に情報を格納しておける箱のことです。

Sub test()
Dim number
number = 100
MsgBox (number) '100と表示されます
End Sub
VBAでは、必要に応じて変数のデータ型を指定することができます。例えば整数情報を格納したい場合はInteger型を、文字列を格納したい場合はString型を指定します。VBAでは、変数宣言の後にAsを用いて変数の型を指定することができます。
Sub test()
Dim number As Integer
number = 100
MsgBox (number) '100と表示されます
Dim text As String
text = “sample”
MsgBox (text) 'sampleと表示されます
End Sub
この変数は、さまざまな関数の基礎になるものです。指定のセルに入力された値を変数に入れて別の関数に組み込み、特定の処理を施したりすることが可能になります。これから紹介するさまざまな関数にこの変数を利用することで、より実践的な使い方ができるようになりますので必ず使えるようになっておきましょう。

③配列の利用

VBAでは、サイズを指定して変数を宣言することで配列として利用できます。配列とは、複数の変数を一つの連続する変数として保持できるものです。配列を利用することで、同一目的で利用する複数の変数をまとめて管理できるため、利便性が向上します。

Sub test()
Dim numbers(3) As Integer
numbers(0) = 100
numbers(1) = 200
numbers(2) = 300
numbers(3) = 400
MsgBox (numbers(1)) '200と表示されます
MsgBox (numbers(3)) '400と表示されます
End Sub

配列は多くの方がつまづくポイントですが、基本的な構文は上のとおりです。複数のデータをまとめて使う方が便利な時に、この配列が使われます。例えば、複数の文字列を一緒に扱って同じ処理をしたい場合や、指定の文字列を順番に名称をつけて別のシート名をしたい場合など、まとめて複数の処理をしたい場合にこの配列が使われます。なおこの配列は、後述するFor〜Next構文と相性が良いので、そちらでも紹介します。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

④シートとセルの指定とデータ入力

VBAでは、Excel上のセルをRangeプロパティもしくはCellsプロパティを用いて指定し、データの取得と入力を行うことができます。セルの操作はVBAを用いてExcelマクロを作成する場合に必須となるテクニックです。以下では、エクセルシート上のA1セルを対象に文字を読み取り、A2セルにコピーする例を示します。

Sub test()
Dim text As String
' Rangeプロパティを用いる方法
text = Range("A1").Value ' A1セルの情報を取得
Range("A2").Value = text ' A2セルに情報をコピー
' Cellsプロパティを用いる方法
text = Cells(1, 1).Value ' A1セルの情報を取得
Cells(2, 1).Value = text ' A2セルに情報をコピー
End Sub
一見コピーするだけなので、右クリック「コピー」やCtrl+Cのショートカットで代用可能かと思う方もいらっしゃいますが、大量のデータを扱う時にはこの関数が重宝されます。数十万件のデータを対象に、指定のデータを指定の部分にコピーをしたいといった際は、手動で入力するとなるととんでもない時間がかかってしまいます。そこでこの関数を使うことで、関数の入力をしてあとは待つだけで良くなり、大量のデータのコピーペーストを数十分で終えることができます。

⑤条件分岐

VBAでは、If~Then~Elseステートメントを用いて条件分岐を行うことができます。条件分岐とは、指定した条件に合わせて処理を切り替えることです。以下では、年齢応じて表示する文字列を変更するプログラムの例を示します。

Dim years_old As Integer
years_old = 30
If years_old < 20 Then
MsgBox ("子どもです")
Else
MsgBox ("大人です")
End If
End Sub
条件分岐はVBAの中でもよく使うテクニックの1つです。条件によって処理を分けたい場合に使われ、例えばテストの点数を計算し、90点以上の場合は「合格」と、90点未満の場合は「不合格」と出したいといった場合に活用できます。極論この処理だけ見るとセル内の関数で処理できるかと思われますが、データが数十万件など大量にある場合や、処理が複数にわたる場合などはこのVBAを組んでおいた方が処理が軽くなりやすく、Excelシートが重くなりづらいのでおすすめです。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

⑥繰り返し処理

VBAでは、For~Nextステートメントを用いて繰り返し処理を行うことができます。VBAでは、Forステートメントの後にToステートメントで繰り返しの回数を指定します。以下の例では、1歳から30歳までの間で、年齢の数だけ豆を食べる際の豆の数を出力するプログラムを示します。

Sub test()
Dim years_old As Integer
years_old = 30
MsgBox ("歳の数だけ豆を食べます")
For i = 1 To years_old
MsgBox (i & "個目")
Next
End Sub
この繰り返し処理は、同じ処理を何度も繰り返したい場合に使うことができます。例えば、上の図だと1〜30までのそれぞれの数字をそれぞれのセルに入力していく必要があり、手間がかかってしまいます。仮に30だけなら入力できたとしても、これが10000件必要だったり、1〜30歳までの数を1000回繰り返したい、といったように数がかなり増えた場合には面倒になります。そういった場合にこのFor〜Next構文を活用することができます。

また、上でも説明したとおり、このFor〜Next構文は配列と組み合わせることでより効率よく値を入力していくことができます。
Sub test()
 Dim arr() As String
 arr = Split("A;B;C", ";")

 Dim i As Long
 For i = LBound(arr) To UBound(arr)
  MsgBox arr(i)
 Next
End Sub
例えば上の例だと、A〜Cの文字を繰り返し出力することができます。特定の文字列の組み合わせを順番に出力したい場合などに重宝できます。

⑦プロシージャの作成

VBAでは、Subを用いてプロシージャを作成し、処理をひとまとめにすることができます。繰り返し利用するようなプログラムであれば、プロシージャを用いて処理をまとめることで再利用性が高まります。プロシージャの処理内容は、Sub xxx()からEnd Subまでの間に記述します。

Sub test()
setsubun ' 節分プロシージャの実行
End Sub

' 節分プロシージャ
Sub setsubun()
Dim years_old As Integer
years_old = 30
MsgBox ("歳の数だけ豆を食べます")
For i = 1 To years_old
MsgBox (i & "個目")
Next
End Sub
プロシージャに返り値を持たせる場合は、Subの代わりにFunctionを用います。返り値とはプロシージャの処理結果に応じて設定される値で、呼び出し元に返却されるものです。以下の例では、大人かどうかをプロシージャで判定の上、その判定結果を返り値として呼び出し元に返却しています。
Sub test()

Dim message As String
Dim years_old As Integer
years_old = 30
message = otona_check(years_old)
MsgBox (message)
End Sub

' 大人判定プロシージャ
Function otona_check(years_old) As String
If years_old < 20 Then
otona_check = "子どもです"
Else
otona_check = "大人です"
End If
End Function
プロシージャは、条件分岐や繰り返し処理、メッセージボックスの表示などの組み合わせたものを1セットとしてまとめ、同じ処理をおこないたい場合に活用することができます。例えば、繰り返し処理をしつつ指定の条件の時にメッセージボックスを出す、という処理を別の条件や別のセルなどでも使いたい場合にこのプロシージャとしてまとめておくことで、簡単に何度も呼び出すことができます。

プログラミングをしたことのある方なら、このプロシージャは自分で定義できる関数のことを指しますので、同じようなものだと思っておくと良いでしょう。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

⑧ダイアログボックスの応用

①で紹介したダイアログボックスの応用編です。ダイアログボックス上で「はい」「いいえ」を入力してもらい、その入力結果に合わせて条件処理で指定の文字列を出す、という処理をここでは学習します。

Sub test()
    Dim res As Integer
    res = MsgBox("これでOKですか?", vbOKCancel)

    If ans = vbOK Then
        'OKボタンがクリックされたときの処理
    Else
        'キャンセルボタンがクリックされたときの処理
    End If
End Sub
メッセージボックス上に「はい」「いいえ」のボタンを出し、はいかいいえかによって出す結果を変える関数です。例えばテストの偏差値を入力したいセルに「100」「0」など偏差値として出づらい値が入力された場合に、「これで問題ないですか?」と確認した上で「はい」の場合はそのまま入力を、「いいえ」の場合は「正しい偏差値を入力してください」といった処理を施すことができます。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

5.次に進む方におすすめの学習方法

最後に、はじめてVBAを学習する際におすすめの方法について紹介します。

書籍で学ぶ

VBAは人気の高い言語であり、多数の入門書が販売されています。VBAは比較的学習しやすい言語ではありますが、プログラミング経験がない場合などはそもそもプログラミングの考え方などが理解できず、苦労する場合もあります。どうしても書籍での独学は挫折しやすいため、後述するスクールの活用もおすすめです。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

資格の取得を目指す

VBAには、関連資格としてVBAエキスパートという資格が存在します。資格の取得を目標にして学習することもおすすめです。VBAエキスパートにはExcel VBAベーシック、Excel VBAスタンダート、Access VBAベーシック、Access VBAスタンダートの4種類がありますが、特に初学者であれば取り組みやすいExcel VBAベーシックから取得を目指すことをおすすめします。

プログラミングスクールを活用する

独学での学習はハードルが高いため、プログラミングスクールを利用することもおすすめです。VBAを学ぶことができるスクールは豊富に存在しますが、どうしてもスクールに通うためには費用がかかるため、評判や実績を確認するなど、慎重にスクールを選ぶべきでしょう。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

6.VBAを学習するメリットと活かせる職種

学習のメリット

上述の通り、VBAは業務効率化に役立つプログラミング言語であり、習得することで実務においてメリットがあります。特に、近年ではDX(デジタルトランスフォーメーション)に注目が集まっており、各企業はDXへの取り組みを進めています。DXの一環として、業務の自動化による業務効率化が行われており、VBAをはじめとした自動化ツールの活用が進んでいます。VBAを習得することで、DXの実行に向けた有力な戦力とみなされるようになるでしょう。

活かせる職種

VBAはエンジニア志望の方はもちろん、非エンジニアとして就職する場合でも業務に役立つ言語です。たとえエンジニア就職を目指さないとしても、VBAを学習することでITに詳しい有用な人材であるとみられるようになるでしょう。VBAは幅広い職種で働くうえで活用することができるため、どなたでも学習して損はない言語といえます。
また、開発現場によってはVBAを用いてシステム開発を行うこともあります。VBAを用いたシステム開発の例としては、中心となるシステムの周辺システムとしてVBAを用いてツールを作成するケースなどが挙げられます。VBAの知識を備えておくことで、エンジニアとして就職を目指す際にも活躍の幅が広がります。

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

\15年超の実績を持つレバテックが運営/

ITエンジニア就活支援サービスに登録する

7.まとめ

VBAは、ビジネスの現場で多く利用されるOfficeツールを用いた業務を効率化するために有効なツールです。学習することで、就職活動の際のアピールポイントの一つになります。書籍やWebサイトを使って学習を始めてみることをおすすめします。

ITエンジニアを目指す新卒学生向け就活エージェントならレバテックルーキー

レバテックルーキーは、レバテックが運営するITエンジニア専門の就活エージェントです。多数のITエンジニアのキャリア支援経験のあるアドバイザーが、あなたのスキルと希望に合わせた企業の紹介から、人事目線での面接対策など、就職までを一貫してサポートします。ES添削、面接対策、ポートフォリオ作成サポートなども実施していますので、まずは一度カウンセリングにお越しください。

就活アドバイザーに相談してみる

レバテックカレッジ 就活まで支援するエンジニア志望学生のためのプログラミングスクール