VBA(Visual Basic for Applications)
マクロとは、アプリケエーションソフトの操作を自動化するための機能である。
シートやフォームに関連しないコードを標準モジュールという。
メッセージボックスを表示する。
Sub Message()
MsgBox "Hello World!"
End Sub
SubとEnd Subの間に記述したコードのかたまりをプロシージャという。
ステートメントを次の行に続ける場合は、改行の前に「 _」(半角スペースとアンダーバー)を記述する。
コメントは「'」(シングルクォーテーション)を使って記述する。
変数の宣言
Integer型(整数)の変数aを宣言する。
Dim a As Integer
文字列型
文字列はStringというデータ型に格納する。
Dim fruit As String
fruit = "りんご"
定数
定数はConstを使って定義する。
Const PI As Integer = 3.14
定数に値を代入することはできない。
特殊文字
- vbCr 改行
- vbTab タブ
- vbBack バックスペース
- vbNullChar NULL文字
配列
配列の宣言
Dim a(1 To 4) As Integer
または、
Dim a(3) As Integer
配列の要素の参照と代入
a(0) = 1
MsgBox a(0)
MsgBox関数
MsgBox (prompt[, buttons][,title][, helpfile, context])
Buttonsには、vbOKOnly、vbOKCancel、vbYesNo、vbYesNoCancelなどを指定できる。
プロシージャ
Subプロシージャは戻り値がない。
SubステートメントとEnd Subステートメントを使って定義する。
引数のあるプロシージャは以下のように定義する。
Sub A(str As String)
MsgBox str
End Sub
Functionプロシージャは戻り値がある。
FunctionステートメントとEnd Functionステートメントを使って定義する。
Function A()
aaa = "Hello"
End Function
プロシージャの呼び出しにはCallステートメントを用いる。
Call A
引数を渡して呼び出す場合
Call A("引数1")
変数のスコープ
プロシージャ内で宣言した変数は、宣言したプロシージャ内でのみ有効である。
モジュールの先頭で宣言した変数は、モジュール内で有効である。
バリアント型
宣言せずに使用した変数のデータ型をバリアント型(Variant)という。
バリアント型のサイズは16バイトである。
モジュールの先頭で次のように記述すると、宣言していない変数を使用できないようにできる。
Option Explicit
文字列連結演算子
MsgBox "2010" & "年"
""IF~Thenステートメント
If 条件 Then
処理1
ElseIf 条件2 Then
処理2
ElseIf 条件3 Then
処理3
Else
処理4
End If
""Select Caseステートメント
Select Case 式
Case 値1
処理1
Case 値2
処理2
Case Else
処理n
End Select
値の指定方法
Case 4,5,6
Case 2 To 5 // 範囲指定
比較演算子の使用
Case Is < 10
For~Nextステートメント
Dim i As Integer
For i = 0 To 3
処理
Next
増分の指定
Dim i As Integer
For i = 2 To 30 Step 3
処理
Next
For Each ~Nextステートメント
あるオブジェクトの集まりに対して、その中のすべての要素に対して処理を行う。
Dim ws As WorkSheet
For Each ws In WorkSheets
処理
Next
Do~Loopステートメント
Do While~Loopステートメント
処理の前に条件を評価する。
Do While 条件
処理
Loop
Do ~Loop Whileステートメント
処理の後に条件を評価する(必ず1度処理を実行する)。
Do
処理
Loop While 条件
ある条件が成立するまで繰り返しを実行するには、Untilを使用する。
Do Until~Loopステートメント
処理の前に条件を評価する。
Do Until 条件
処理
Loop
Do ~Loop Untilステートメント
処理の後に条件を評価する(必ず1度処理を実行する)。
Do
処理
Loop Until 条件
Exitステートメント
Exit For
Exit Do
無限ループ
[Ctrl] + [Break]で中断可能
オブジェクト
操作の対象となる、Excelのワークブックやワークシートをオブジェクトという。
また同じ種類のオブジェクトをひとまとめにしたものをコレクションという。
オブジェクトはObject型の変数に代入できる。
Setステートメントで変数とオブジェクトを関連付ける。
Dim obj As Object
Set obj = Application
変数とオブジェクトの関連付けを無効にする場合は、Nothingキーワードを使用する。
Set obj = Nothing
プロパティ
プロパティとは、オブジェクトの状態や属性のことである。
参照
Dim cnt As Integer
cnt = ThisWorkbook.Worksheeets.Count
メソッド
メソッドとは、オブジェクトを操作したり、動作させるインターフェースである。
ワークブックBook2をアクティブにする。
Workbooks("Book2").Activate
例 A1:A3にHelloを記入する。
Sub SheetActivate
Sheet3.Activate
ActiveSheet.Range("A1:A3").Select
Selection.Value = "Hello"
End Sub
ワークブックBook1を、保存せずに閉じる。
WorkBooks("Book1").Close False
2番目のワークシートの次に、ワークシートを1つ追加する。
Worksheets.Add After:=Worksheets(2), Count:=1
ユーザーフォームの操作
ユーザーフォームを表示する
Load UserForm1
UserForm1.Show
ユーザーフォームを閉じる
Unload UserForm1
セルの参照
1つのセルを参照するには、CellsプロパティまたはRangeプロパティを使用する。
A1セルに10を代入する。
Cells(1,1).Value = 10
Range("A1").Value = 10
セル範囲の参照
Range("A1","B2").Select
アクティブセルの参照
MsgBox ActiveCell.Value
VBAで数式を取得・設定するにはFormulaプロパティを使用する。
Cells(1,1).Formula= "=1+1"
セルの表示形式
NumberFormatプロパティを使用する。
ActiveCell.Value = "2010/5/5"
ActiveCell.NumberFormat = "yyyy年m月d日"
ActiveCell.Value = "1000"
ActiveCell.NumberFormat = "\\#,##0"
ActiveCell.Value = "10"
ActiveCell.NumberFormat = "0.00"
文字の色
Cells(1,1).Value = "AAAAA"
Cells(1,1).Font.Color = RGB(255,0,0)
文字の大きさ
Cells(1,1).Value = "AAAAA"
Cells(1,1).Font.Size = 8
罫線
ActiveCell.Borders.LineStyle = xlContinuous
他には、xlDash、xlDoubleなど
セルの塗りつぶし
ActiveCell.Interior.Color = RGB(200,200,200)
最終更新:2010年05月08日 19:50