Excel VBAとは―入門知識を紹介。
技術情報
Excel VBAとは何かをテーマに、業務改善に使えるExcel VBAの入門知識を紹介しています。
目次
この記事の目次です。
1. Excel VBAとは
2. 入門するための準備作業について
3. エクセルシートにボタンを追加して実行する
4. 文字列を連結する
5. セルの値を取得する
6. セルに値を入力する
7. セルを削除する
8. 変数を使用する
9. 最終行を取得する
10. 条件分岐(If文、ElseIf文、Else文)を行う
11. 回数を指定して処理を繰り返す(For文)
12. VBAの演算子
13. ユーザ定義関数を作る
14. 名前を指定してファイルを開く
1. Excel VBAとは
VBAとは、Visual Basic for Applicationsの略で、Microsoft Officeに含まれるアプリケーションの拡張機能、あるいはその機能で利用できるプログラム言語のことをいいます。 Excelなどの利用者が簡単なプログラムを記述して実行することができます。
読み方
Excel VBAの読み方は「エクセル ブイビーエー」です。
マクロ
VBAで書かれたプログラムのことをマクロといいます。
Microsoft Officeで利用する
KingsoftなどMicrosoft Office以外でも対応していますが、Microsoft Officeが標準装備している定数、プロパティー、メソッド、クラス等はごく一部でうまく動作しないケースが多いです。 VBAのマクロを利用したい場合は、Microsoft Officeで利用するものと考えた方が無難です。
2. 入門するための準備作業について
Excel VBAに入門するにはVBAが使えるようマクロVBAが使える環境にする必要があります。
「開発」タブを追加
ご自身のExcelを起動すると「開発」タブは表示されますでしょうか。 Excel VBAを始めるには、まず「開発」タブが表示される状態にする必要があります。
Excel2007
左上のOfficeボタン ⇒ 一番下の「Excelのオプション」 ⇒ 左メニューの「基本設定」 ⇒ 「[開発]タブをリボンに表示する」にチェックすることで「開発」タブが表示されます。
Excel2010以降
ファイル ⇒ オプション ⇒ 左メニューの「リボンのユーザー設定」 ⇒ 「開発」にチェックすることで「開発」タブが表示されます。
「Visual Basic Editor」の表示
Excel VBAのコードは「Visual Basic Editor」で編集します。 「Visual Basic Editor」は、Excel上部リボンの「開発」⇒「Visual Basic」で表示できます。
マクロの実行方法
マクロを動かすには実行メニューから行うか、F5キーで行ないます。
3. エクセルシートにボタンを追加して実行する
エクセルシートにボタンを追加して、そのボタンからマクロが実行できるようにする方法です。
開発タブ>挿入>ボタンアイコン
開発タブにある挿入から、ボタンのアイコンを選択して、エクセルシート上でマウスのドラックしてボタンを配置します。
マクロ名を決めて新規作成
ボタンを配置すると自動でマクロの登録ダイアログが表示されます。 マクロ名を設定して、新規作成を選択します。
Visual Basic Editorでマクロを実装
新規作成を選択すると、Visual Basic Editorが開きます。 Visual Basic Editorでマクロを記述します。
以下は、「ボタン_Click()」というマクロ名を付けて、メッセージボックスを表示するコードの例です。
Sub ボタン_Click() MsgBox "ボタンがクリックされました。" End Sub
保存してボタンを押すとマクロが実行される
Visual Basic Editorでコードを保存すると、作成したエクセルシート上のボタンでマクロが実行できるようになります。
4. 文字列を連結する
VBAでは文字列は「"(ダブルコーテーション)」でくくります。 また文字列を連結する場合は「&」を使用します。
Sub ボタン_Click() MsgBox "ボタン" & "がクリックされました。" End Sub
5. セルの値を取得する
Cellsを使うとセルの値が取得できます。
Sub ボタン_Click() MsgBox "A1:" & Cells(1, 1).Value MsgBox "A2:" & Cells(2, 1).Value MsgBox "B1:" & Cells(1, 2).Value MsgBox "B2:" & Cells(2, 2).Value End Sub
別のワークシートの値を取得する
別のワークシートの値を取得する場合はWorksheetsを介することでセルの値を取得できます。
Sub ボタン_Click() MsgBox "Sheet1のA1:" & Worksheets("Sheet1").Cells(1, 1).Value MsgBox "Sheet1のA2:" & Worksheets("Sheet1").Cells(2, 1).Value MsgBox "Sheet1のB1:" & Worksheets("Sheet1").Cells(1, 2).Value MsgBox "Sheet1のB2:" & Worksheets("Sheet1").Cells(2, 2).Value End Sub
6. セルに値を入力する
Cellsを使うとセルに値を入力することができます。
Sub ボタン_Click() Cells(1, 1).Value = "A1" Cells(2, 1).Value = "A2" Cells(1, 2).Value = "B1" Cells(2, 2).Value = "B2" End Sub
7. セルを削除する
セルのオブジェクトのDeleteメソッドでセルを削除することができます。
セル範囲を削除する例
Rengeで取得したセル範囲(A1からB3の範囲のセル)を削除する例です。
Sub ボタン_Click() Range("A1:B3").Delete End Sub
8. 変数を使用する
変数は扱うデータを読み書きする記憶域で、名前をつけてデータを扱うことのできる機能です。
変数のスコープと種類
変数はスコープ(使用できる範囲)によってDim、Private、Public、Staticなどの識別子を記述します。
Dimはローカル変数(プロシージャ内だけで使用できる変数)、 Privateはプライベート変数(そのモジュールだけで使用できる変数)、 Publicはパブリック変数(全てのモジュールで使用できる変数)、 Staticはプログラム終了まで値が保持される変数です。
変数の宣言
変数は以下のように宣言して使用します。
Dim hensuu As Integer
Dimはローカル変数(プロシージャ内だけで使用できる変数)にしたいとき記述し、hensuuは変数の名前、As Integerはデータ型(どのようなデータを扱うか)を指定する記述です。
文字列の変数
文字列を扱う変数は「As String」で宣言します。
Sub ボタン_Click() Dim A2 As String A2 = Cells(2, 1).Value MsgBox "A2の値:" & A2 End Sub
9. 最終行を取得する
ワークシートの最終行を取得する方法です。
endRow = Cells(Rows.Count, 1).End(xlUp).Row
ワークシートの一番下からカーソルをアップさせたときの値を取得する方法です。
10. 条件分岐(If文、Else文)を行う
現在の状態を判断して、次の処理内容を変更するには、If文を使用します。
構文
構文は以下です。
If <条件式> Then : Else : End If
URLに単語が含まれるかどうかを判定する例
If文を使用して、URLに特定の単語が含まれるかを判定する例です。
Dim searchWord As String Dim url As String searchWord = "target" url = Worksheets("データ").Cells(1, 4).Value If url Like "*" & searchWord & "*" Then MsgBox "URL:" & url & " 判定:〇" Else MsgBox "URL:" & url & " 判定:×" End If
「Like "*" & searchWord & "*"」のように「Like」演算子を使用することで正規表現が使用できます。 「*」は0文字以上の繰り返しを表す正規表現です。
11. 回数を指定して処理を繰り返す(For文)
指定した回数だけ特定のステートメント(処理)を繰り返すにはFor...Nextを使用します。 一般的にはこれをFor文といいます。
書式
For...Nextの書式は以下です。
For カウンタ変数 = 開始値 To 終了値 : Next
For文の例
For文の例です。
For i = 1 To 10 Cells(i, 1).Value = i Next
12. VBAの演算子
計算式や判定などで使われる演算子についてです。
演算子とは
演算子(operator)とは、2=1+1のような計算式がある場合、=と+のような記号のこといいます。
代入演算子
代入演算子(=)を使用して、値を変数に代入(設定)することができます。
比較演算子
比較演算子は、If分など条件式に使われる演算子です。
比較演算子 | 意味 |
= | 等しい |
<> | 等しくない |
> | より大きい |
>= | 以上 |
< | より小さい |
<= | 以下 |
13. ユーザ定義関数を作る
他のプログラミング言語と同様にVBAでもユーザー定義関数を作ることができます。
ユーザ定義関数とは
ユーザ定義関数は関数を自分で作成すること、作成した関数のことをいいます。
ユーザ定義関数の例
If文を使用して、URLに特定の単語が含まれるかを判定するユーザ定義関数の例です。
Sub main() Dim searchWord As String Dim url As String searchWord = "target" url = Worksheets("データ").Cells(1, 4).Value If checkUrl(url, searchWord) = True Then MsgBox "URL:" & url & " 判定:〇" Else MsgBox "URL:" & url & " 判定:×" End If End Sub Function checkUrl(url As String, searchWord As String) If url Like "*" & searchWord & "*" Then checkUrl = True Else checkUrl = False End If End Function
VBAの関数の作り方には、値を返さないSubと、値を返すFunctionがあります。 main関数は戻り値を返さないのでSub、checkUrl関数は戻り値を返すのでFunctionを先頭に付けて定義します。
「Function checkUrl(url As String, searchWord As String)」の()の中は引数と呼ばれる関数内に外から値を渡す際に使用される変数です。
また「checkUrl = True」のように関数名に値を代入することで、その値を戻り値として設定できます。
「If checkUrl(url, searchWord) = True Then」のように関数を呼び出すと戻り値を使用して判定など関数の外で戻り値の値が使用できます。
14. 名前を指定してファイルを開く
名前を指定してファイルを開くには、Application.GetOpenFilename関数を使用します。
サンプルプログラム(CVSファイルの取り込みの例)
CVSファイルの取り込みを行うサンプルプログラムです。
Sub getCVS() Dim varFileName As Variant varFileName = Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv", _ Title:="CSVファイルの選択") If varFileName = False Then Exit Sub End If Workbooks.Open Filename:=varFileName ActiveSheet.Cells.Copy ThisWorkbook.ActiveSheet.Cells ActiveWorkbook.Close SaveChanges:=False End Sub
更新履歴
更新履歴になります。
- 2023/3/12 演算子について追記しました。
- 2023/3/8 セルを削除する方法について追記しました。
- 2022/7/26 回数を指定して処理を繰り返す(For文)について追記しました。
- 2022/5/20 セルに値を入力する方法について追記しました。
- 2022/3/13 ユーザ定義関数について追記しました。
- 2022/1/10 条件分岐(If文、Else文)を行う方法について追記しました。
- 2021/11/29 最終行を取得する方法について追記しました。
- 2021/8/13 別のワークシートの値を取得する方法について追記しました。
- 2021/6/8 セルの値を取得する方法について追記しました。
- 2021/4/17 変数について追記しました。
- 2021/2/9 エクセルシートにボタンを追加して実行する方法について追記しました。
- 2021/1/22 入門するための準備作業について追記しました。
- 2020/12/4 名前を指定してファイルを開く方法について追記しました。
- 2020/10/16 記事をアップしました。