Excel VBA

Excel VBAは、OfficeシリーズのMicrosoft Excelで使えるプログラミング言語です。VBAを使うことで、Excelを自分の好きなようにカスタマイズできるだけでなく、定型的な業務を自動化させることができたり、Excelを用いたアプリケーションを作ることができます。会社で作られるほとんどの報告書は、VBAを用いて作成を自動化できます。身に着けることで、普段の業務を大幅に短縮させられるでしょう。また、データを分析するときにも、分析以外の作業に手間取らずに済むので大変便利です。このページでは、Excel VBA初心者に向けた最初のセットアップから有名な関数やメソッドまで、幅広く学べる記事をまとめました。

始め方

Excel VBAとは? 始め方の解説
Excel VBA初めての方へ。プログラムを組む上で必要な土台を設定します。

入門

VBAでプログラミングを組むうえで絶対に必要になる基礎中の基礎知識です。初心者の方は、まずはこの章から勉強を進めていくとよいでしょう。

変数を宣言する方法:Dim
変数の定義は、プログラミングの基本です。必ずできるようにしましょう。
メッセージボックスを表示する:MsgBox
プログラムの結果を表示させる方法の一つにメッセージボックスがあります。
イミディエイトウィンドウに情報を表示する:Debug.print
プログラムの結果をイミディエイトウィンドウに表示する方法を紹介します。
コメントを記述する方法
後で見た時でもコードの意図が分かるように、適時コメントをつけることが重要です。
定数を宣言する:Const
Dimに比べると使用頻度は低いですが、使えると便利なので定数も使えるようにしましょう。

セルを操作する

コンピュータにセルを操作させるプログラミングを組みます。どれも単体で使用されるより、他の関数と一緒に使われることが多いので、使用頻度は高いです。

セルを取得する:Range
任意のセルの範囲を取得します。
セルの値を取得・設定する:Value
ワークシートのセルに入った要素を使いたい、またはセルに文字や数値を入れたいときに使用します。
セルを選択する:Select
セルを選択させる関数です。
セルに数式を入力する:Formula,FormulaR1C1
Excelで行われる計算式とその結果をセルに入力します。
セルのコピー・ペーストする:Copy, Pastespecial
セルを別の場所にコピー・ペーストします。
セルに背景色を付ける:Interior
表にメリハリをつけたいときなどは、背景色を設定するとよいです。
罫線を引く:Borders,BorderAround
表を作りたいときには、このBordersとInteriorを使うと綺麗にできます。
セルの結合と解除:MergeCells
いくつかのセルを結合させたり、結合を解除させたりさせます。
セルの選択位置を移動する:Offset
表の数値部分のみを扱うときなど、選択位置をずらす必要があるとき使用します。
行や列の表示・非表示を切り替える:Hidden
特定の行や列だけ非表示にする関数です。

ワークシートを操作する

ワークシートを操作するプログラムです。最初のうちは直接触れたほうが速いように思えますが、複雑なプログラムを組む際には便利です。

オブジェクトを代入する:Setステートメント
ワークシートや配列のようなオブジェクトを指定するときには、Setステートメントが必要です。
シートをアクティブにする:Active
シートをアクティブにします。複数のシートを用いたプログラムで便利です。
シート名を取得する ・変更する: Name
シートの名前を取得して使用したり、任意のものに変更したりできます。
シートを追加する:Add
シートを新たに追加します。
シートを移動する:Move
シートを任意の順番に入れ替えます。
シートを削除する:Delete
不必要なシートを削除します。
シートをコピーする:Copy
シートのデータをそのまま新しく作るシートにコピーします。
シートの表示・非表示を切り替える:Visible
任意のシートのみを表示する関数です。

ステートメント:条件分岐、繰り返し

プログラムの大枠を作るステートメント達です。場合ごとに条件分けをしたり、同じ操作を繰り返したりという作業はExcelでよくあります。そのような作業を自動化するにはどうすればよいのか、紹介します。

条件分岐:If ElseIf Else
プログラムの中で条件を分けて考えたい部分で使用します。
条件分岐:Select Case
Selectでも条件分岐をさせることができます。場合によってIfとどちらがシンプルに書けるか使い分けるとよいでしょう。
Excel VBAのWithステートメントの使い方
Withは同じ文章を何度も打ち込む場面で便利です。
Excel VBAの繰り返し:Do While Loop
繰り返し同じ作業をさせる時に、Do While Loopは便利です。
繰り返し:For Next
For Nextでも繰り返しをさせることができます。
Excel VBAで繰り返しを行う:For Each Next
配列などを効率よく扱いたいときは、For Each Nextによる繰り返しが便利です。
Excel VBAでFor文を途中で抜ける:Exit
For~NextやDo~Loopの繰り返しを途中で抜けたいときに使用します。

数値を操作する

Excel VBAでは、数を「数値」と言い、それ以外のアルファベット、記号、漢字などの文字を「文字列」と言います。この章では、数値の扱い方を紹介します。

数値を四捨五入する:Round
四捨五入した値を返す関数です。
値が数値であるかどうかチェックする:IsNumeric
数値なのか、文字列なのかを返します。同じ列に文字列も数値もある場合などで有効です。
文字列を数値に変換する:Val
数値と文字列が混在している要素を数値に変えます。
数値を文字列に変換する:Str
Val関数の逆で、数値を文字列に変更します。

文字列を操作する

この章には文字列を扱う関数をまとめてあります。

文字列の切り出しを行う:Left, Right, Mid
左や右など、任意の位置から、任意の文字数を切り出します。
文字列を結合する:&, +
複数のセルに分かれた文字列を結合します。
文字列を置換する:Replace
文字列の一部を別のものに買えたり、削除したりするときに用います。
文字列を分割する:Split
文字列を分割します。
文字列の先頭と末尾の空白を削除する:Trim
文字列に不必要な空白があったときなどに使用します。
文字列を比較する
指定した文字列と、他のデータを比較します。
文字列を検索する:InStr, Find
データの中から、指定した文字列を含むものをさがします

データを扱う

Excelでデータを分析するときに利用する関数がまとめられています。利用する頻度の高い関数ですのでどれも使えるようにしておくとよいでしょう。データの大きさを調べたり、ソートしたりする方法を紹介します。

指定した範囲のサイズを変更する:Resize
今まで指定していたセル範囲とは別の範囲を扱いたいときに用います。
最終行・最終列を取得する:xlDown, xlToRight
扱うデータが毎度同じ大きさとは限らない場合、この関数を用いて対応します。
指定した範囲の最大値・最小値を取得する:Max, Min
範囲が広く確認に時間がかかる時便利です。
セルを並べ替える:Sort
セルを昇順、降順などのある法則のもとに並び替えます。
データを抽出する方法:AutoFilter
大量のデータの中から条件に合うデータを抽出します。
範囲を指定して乱数を生成する:Rnd,Int
乱数を発生させます。ランダムな処理に使用します。

配列

配列とは、同じ要素が集まったものです。Excelでは多くの要素が配列によって整理されています。それらを扱う関数がまとめられています。

静的配列と動的配列の宣言:Dim, Redim, Redim Preserve
配列を宣言し直す際など、Dim以外で宣言しなければならない場合が存在します。
配列を検索する:Filter
配列内から指定したものを含む要素を返します。
配列の要素数を取得する:UBound
指定した配列の中にある要素の最大数を調べます。
配列を初期化する・再定義する:Erase,Array
配列を初期化して、新しく利用するときに使用する関数です。
2次元配列を宣言する
2次元配列の説明をしたあと、2次元配列の宣言方法を紹介します。

グラフ

データをわかりやすくするために、Excelでグラフはよく使用されますが、これもVBAで自働化できます。

グラフを作成する:グラフ、タイトル、数値軸
2回に分けて、さまざまなグラフを書く指令をだすプログラミングを組みます。
グラフを設定する:種類、位置、大きさ
第2回は、グラフの種類や、グラフを各一、大きさを指定する方法を紹介します。

日付・時刻

日付や時刻を自動で取得する関数です。

曜日を取得する:Weekday, WeekdayName
PCに記録されている時間から曜日を取得します。
日付や時刻の情報を扱う:Date, Time
PCに記録されている時間から日付・時刻を取得します。

Excelの外を操作する。

プログラムによっては、Excelの外での処理が必要になる場合があります。

ファイルを検索する:Dir
ファイルが存在するか調べます。
フォルダを作成する:MkDir
PC内の場所を指定して新規フォルダを作ることができます。
他のプログラムを起動する:Shell
PC内にある他のソフトやプログラムを起動します。

エラー処理

プログラムが常に成功するわけではなく、時には作ったプログラムに合わないデータを扱ってしまったり、バグが発生したりすることがあります。そのような事態のために、エラー処理をあらかじめしておくとよいでしょう。

エラー処理を行う:On Error
エラーが起こった際に条件分岐して処理を行います。

イベント

2017/12/05(火)
Design Thinking Square

購読

平日・毎朝更新中