VBAの基本構文 | VBA

製品のちょっとしたテストにVBAはとても役立ちます。本家では公開を取り止めましたが、EasyCommを使えばRS-232やRS-485などのシリアル通信も比較的簡単に行えます。そして何より、ほとんどのパソコンにインストールされているであろう、Excel上で動くというのが大きなメリットです。商用利用でも追加費用無しで開発・使用できます。
そんなVBAの覚え書きです。

目次

変数の型

Dim b2 As Boolean   'True / False
Dim u1 As Byte      '0 - 255
Dim i2 As Integer   '-32,768 - 32,767
Dim i4 As Long      '-2,147,483,648 - 2,147,483,647
Dim f4 As Single    '-3.402823E38 - 3.402823E38
Dim f8 As Double    '-1.79769313486232E308 - 1.79769313486232E308
Dim c8 As Currency  '通貨型:-922,337,203,685,477.5808 - 922,337,203,685,477.5807
Dim str As String   '文字列:最大約20億文字
Dim v16 As Variant  '数値:最大でDoubleの範囲 / 文字列:最大約20億文字
Dim d8 As Date      '西暦100年1月1日 - 9999年12月31日

制御文

'If文
If ret = 0 Then
    '"ret = 0" の場合
End if


'If~Else文
If ret = 0 Then
    '"ret = 0" の場合
Else
    'その他の場合
End If


'If~ElseIf文
If ret = 0 And ret = 1 Then
    '"ret = 0" かつ "ret = 1" の場合
ElseIf ret = 2 Or ret = 3 Then
    '"ret = 2" または "ret = 3" の場合
Else
    'その他の場合
End If


'Select Case文
Select Case num
    Case 0
        '"num = 0" の場合
    Case 1
        '"num = 1" の場合
    Case 2
        '"num = 2" の場合
    Case Else
        'その他の場合
End Select


'For文 (ループ毎に "i + 1")
For i = 1 to 10
    ...
    If ret = 1 Then
        Exit For    'For文を抜ける
    End If
    ...
Next i


'For文 (ループ毎に "i + 3")
For i = 1 to 10 Step 3
    ...
    If ret = 1 Then
        Exit For    'For文を抜ける
    End If
    ...
Next i


'Do While文 (前判定)
Do While len = 0
    '"len = 0" の間ループを続ける
    ...
    If ret = 1 Then
        Exit Do    'Do While文を抜ける
    End If
    ...
    DoEvents    'ループ処理中もExcel操作を受け付ける
Loop


'Do While文 (後判定)
Do
    '"len = 0" の間ループを続ける
    ...
    If ret = 1 Then
        Exit Do    'Do While文を抜ける
    End If
    ...
    DoEvents    'ループ処理中もExcel操作を受け付ける
Loop While len = 0

演算子

'演算
'"a = 7", "b = 2" とすると...
c = a + b      '加算 c = 9
c = a - b      '減算 c = 5
c = a * b      '乗算 c = 14
c = a / b      '除算 c = 3.5
c = a \ b      '商 c = 3
c = a Mod b    '余り c = 1
c = a ^ b      'べき乗 c = 49


'比較
If a < b Then
    'a が b 未満の場合
Else If c <= d Then
    'c が d 以下の場合
Else If e > f Then
    'e が f 超えの場合
Else If g >= h Then
    'g が h 以上の場合
Else If i = j Then
    'i と j が等しい場合
Else If k <> l Then
    'k と l が等しくない場合
End If

プロシージャ

'戻り値なし
Sub func_s1()
    ...
End Sub

Sub func_s2(a As Integer)
    ...
    If ret = 1 Then
        Exit Sub
    End If
    ...
End Sub

'呼び出し例
Call func_s1
Call func_s2(100)


'戻り値あり
Function func_f1() As Integer
    ...
    If ret = 1 Then
        func_f1 = 1    '戻り値
        Exit Function
    End If
    ...
    func_f1 = 0    '戻り値
End Function

'呼び出し例
Dim a As Integer
a = func_f1()

コメント

コメントする

CAPTCHA


目次