1.目的
目次
2.VBAの実行方法


(c) エディタ画面に、プログラムを記載する場所が表示される。

(d) VBAプログラムを記載する。

(e) VBAのファイルを保存する場合は、保存をクリックする。
(f) ファイルの種類をクリックし、xlsxではなく、VBAを有効にする場合は、xlsmの形式で保存する。
通常のxlsxで保存すると次回開いた時に、VBAは消える。

(3) VBAの実行
(a) 開発タブ→マクロをクリック

(b) 実行をクリック

3.VBAの基本的な書き方
ここでは、VBAで使用する基礎的な知識を簡単に紹介する。
(1) sub(サブプロシージャ)
マクロを実行するための基本単位。 これがマクロを実行する時のマクロ名になる。
・Subで始まり、End Subで終わる。
・戻り値を持たない。
書き方:
Sub マクロ名
使用方法の例:
Sub CopyAtoB()
' ここに処理を書く
End Sub
(2) Functionプロージャ(値を返す)
Subプロージャの返り値を返す場合使用する。
・Functionで始まり、End Functionで終わる。
・戻り値を持つ。
書き方:
Function 関数名(引数) As 型 処理 End Function
使用方法の例:
Function AddNumbers(a As Integer, b As Integer) As Integer AddNumbers = a + b ' 2つの数を足して返す End Function
(2) 変数の宣言
変数を使用する場合は、Dimを使用し、変数を宣言する。
データ型を宣言する場合は、Asを使用する。
書き方:
Dim 変数名 As 型名
使用方法の例:
Dim ws As Worksheet ' ワークシートを扱う変数 Dim lastRow As Long ' 最終行の番号を格納する変数
(3) データ型の種類
| データ型 | 説明 |
|---|---|
| Integer | 整数(-32,768 〜 32,767) |
| Long | 大きな整数(約21億まで) |
| String | 文字列 |
| Boolean | True / False |
| Double | 浮動小数点数(小数を含む) |
| Worksheet | シートを扱うオブジェクト型 |
(4) オブジェクトの操作
VBAでは、ワークシートや、セルなどをオブジェクトとして操作する。
オブジェクトに変数を代入すると、簡潔に記述可能。
書き方:
Set オブジェクト名
使用方法の例:
Set ws = ActiveSheet ' 現在アクティブなシートを ws にセット
・ActiveSheetは、現在開いているシートを示す。
・Setを使って、wsというオブジェクトに、現在開いているシートをオブジェクトとして設定。
(5) プロパティ
VBAでは、オブジェクトの情報を設定、取得する際にプロパティを使用する。
書き方:
オブジェクト.プロパティ
使用方法の例:
・rにC5セルの行番号を取得し代入する。
Dim r As Long r = Cells(5, 3).Row ' C5セルの行番号(5)を取得
・Cells(5,3) → C5のセルを指定
・.Row → 行番号を取得
(6) メソッド
VBAでは、オブジェクトに対して実行できる動作(アクション)の指定として、メソッドを使用する。
書き方
オブジェクト.メソッド()
使用方法の例:
・rにA100から上方向に移動し、データがある最初のセルの行番号を取得
Dim r As Long ' 行番号を格納する変数を宣言(データ型はLong) r = Cells(100, 1).End(xlUp).Row ' A100セルから上方向に移動し、データがある最初のセルの行番号を取得
※End(xlUp)は、Ctrl + ↑ キーと同じ動作をすることを示す。
4.VBAプログラム作成例
3.A列の文字をB列にコピーするVBASub CopyAtoB() Dim ws As Worksheet Dim lastRow As Long ' 現在のシートを取得 Set ws = ActiveSheet ' A列の最終行を取得(空白を除く) lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' A列のデータをB列にコピー ws.Range("A1:A" & lastRow).Copy ws.Range("B1").PasteSpecial Paste:=xlPasteValues ' クリップボードをクリア Application.CutCopyMode = False MsgBox "コピーが完了しました!", vbInformation End Sub
作成エクセルファイルVBA置き場:エクセルVBAファイル置き場 - aw007release