VBA
一、データ型と変数
- よく使うデータ型:
- Byte:バイト型。0〜255。
- Integer:整数型。整数値を保存します。範囲は -32768 から 32767 です。
- Long:長整数型。より大きい範囲の整数を保存できます。範囲は -2147483648 から 2147483647 です。
- Double:倍精度浮動小数点数。小数を持つ数値を表し、精度が高いです。
- String:文字列型。テキスト情報を保存し、
"Hello World"のようにダブルクォートで囲みます。 - Boolean:ブール型。
TrueとFalseの二つの値だけを持ち、条件判断でよく使います。 - Variant:任意型。

- 変数宣言:
Dimキーワードを使います。例:Dim num As Integerは、numという Integer 型変数を宣言します。1 行で複数の変数を宣言することもできます。例:Dim a As String, b As Double。
二、制御文と演算子
- 演算子は Java と似ていますが、いくつか特殊なものがあります。
txt
算術演算子
2^3 2の3乗
' 商の整数部分
5\2 = 2
' 余りを取る Mod
12 Mod 9 = 3
比較演算子
' 二つのオブジェクトが同じか比較
オブジェクト1 Is オブジェクト2
' Like は二つの文字列が一致するか比較
' ワイルドカード
* 任意の複数文字
? 任意の一文字
# 任意の一つの数字
[charlist] charlist 内の任意の一文字
[!charlist]
テキスト演算子
+ 文字列を連結
& 文字列を結合
論理演算子
And Or Not
Xor 排他的論理和
Eqv 同値
Imp 含意実行順序: 算術、比較、論理
- If 文
txt
If 条件 Then
真の場合
Else
それ以外
End If ` 終了- For ループ
txt
For i = start To end
` ループ部分
Next i- Select Case
txt
Select Case 値
Case is 条件1
Case is 条件2
...
Case Else ` 上の条件に一致しない
End Select- コレクションを走査する
txt
For Each 変数 in コレクション名
Next 変数- Do While ループ
txt
Do While ループ条件
' ループを抜ける
exit do
Looptxt
Do
Loop While ループ条件三、Sub と Function
- Sub
定義と役割:Sub は特定のタスクを行うコードブロックで、戻り値を返しません。通常は一連の操作を実行するために使います。
txt
Sub サブルーチン名([パラメータリスト])
End Sub- Function
定義と役割:Function は特定の計算を行い、値を返します。数式や条件判断などで呼び出せます。
txt
Function 関数名([パラメータリスト]) As 戻り値型
関数名 = 戻り値
End Function- 組み込み関数
| 関数名 | 機能説明 |
|---|---|
| IsNumeric | パラメータ内のデータが数値か判断します |
| IsDate | パラメータ内のデータが日付か判断します |
| IsEmpty | パラメータ内のデータが Empty(空)か判断します |
| IsArray | パラメータが配列か判断します |
| IsError | パラメータがエラー値か判断します |
| IsNull | パラメータに有効なデータが含まれていないか判断します |
| IsObject | パラメータがオブジェクトか判断します |
| Int | パラメータ以下の最初の整数を返します |
| Fix | パラメータの整数部分を返します |
| Round | 四捨五入した値を返します |
| Sqr | 数値の平方根を返します |
| Abs | 数値の絶対値を返します |
| Rnd | 0〜1 の乱数を生成します |
- テキスト関数
| 関数名 | 機能説明 |
|---|---|
Len | パラメータ内のデータに含まれる文字数を求めます |
Left、Right、Mid | それぞれ左端、右端、任意位置から指定数の文字を切り出します |
Ltrim、Rtrim、Trim | それぞれ左端、右端、左右両端の余分な空白を削除します |
Ucase、Lcase | 英字を大文字、小文字に変換します |
InStr | 指定文字列が別の文字列内にある位置を探します |
Replace | 文字列内の一部を新しい文字へ置換します |
Format | パラメータで指定したデータをフォーマットします |
- 日時関数
| 関数名 | 機能説明 |
|---|---|
Now、Date、Time | 関数実行時のコンピュータのシステム日付、時刻データを返します |
Timer | 午前 0 時から関数実行時までの秒数を返します |
DateSerial | パラメータ指定の年、月、日で日付データを返します |
Year、Month、Day | パラメータ指定の日付から年、月、日情報を返します |
TimeSerial | パラメータ指定の時、分、秒で時刻データを返します |
Hour、Minute、Second | パラメータ指定の時刻から時、分、秒情報を返します |
Format | 日付データの形を持つ文字列を日付データへ変換します |
DateValue | 時刻データの形を持つ文字列を時刻データへ変換します |
DateDiff | 二つの日付の間隔を求めます |
- データ変換関数
| 関数名 | 機能説明 |
|---|---|
Val | パラメータ指定のデータを数値型へ変換します |
CLng | |
CInt | |
CByte | |
CDbl | パラメータ指定のデータを Double 型へ変換します |
CStr | パラメータ指定のデータを String 型へ変換します |
CDate | パラメータ指定のデータを Date 型へ変換します |
CBool | パラメータ指定のデータを Boolean 型へ変換します |
CVar | パラメータ指定のデータを Variant 型へ変換します |
四、Excel オブジェクトモデル操作
- Workbook
- Worksheet
- 新しいワークシートを作成する
txt
workshets.add- シート名を取得する
txt
Sheets.Name- シート数を取得する
txt
Sheets.Count- セル(Range)
- セルに値を設定する
txt
Range("A1").Value = "値"連続選択:
"A1:B10"は A1 から B10 まで連続です。 不連続選択:"A1,B10"は A1 と B10 です。
- 行番号と列番号で単一セルを参照する
txt
sells(行,列)
' 行は数字でなければならず、列は数字でも A でもよい- 行を選択する
txt
rows(行号).select
' 連続して使うこともできる
rows(3:10).rows(1) `3行目から10行目の中の1行目を表す- 列
txt
columns- セルの相対セルを選択する
txt
offset
Range("A1").Offset(5,0) `A1 から下へ5、右へ0移動することを表す
' 負数は反対方向を表す- 行または列の最後のセルを取得する
txt
End(xlUp)
`選択できる値:xlToLeft、xlToRight、xlUp、xlDown- セル書式
txt
セル範囲を変数へ保存する
Set
例:set title = range("B2;G2")
セルを結合する
title.Merge
水平中央揃え
HorizontalAlignment = xlCenter
フォントサイズ
Font.Size = 12
フォント色
Font.ColorIndex = 1
太字
Font.Bold = true
セル内部
Range.Interior
セル背景色
Interior.ColorIndex
罫線
Borders.LineStyle = true
