VB/VBAの言語仕様&文法

言語の特徴(特にC言語との比較)

    • 変数名、関数名に大文字小文字の区別なし
    • 行末にセミコロン(;)不要
    • ポインターがない
    • 文字列型がある
    • オブジェクト指向風

変数の宣言方法

'例

Dim i As Integer

' 配列

Dim MyArray(3) As String
Dim MyArray() As Integer = {1, 2, 3, 4, 5, 6, 7}

グローバル変数の宣言方法

関数(サブモジュールやファンクション)の中で宣言した変数は、その中でしか使えません。他の関数からも使えるようないわゆるグローバル変数の宣言は、コードエディタの最上部に(関数よりも上の部分)に記述すれば、グローバル変数になります。

変数の型

よく使うのを挙げておきます(下記が全てではありません)

    • Integer
    • String
    • Long
    • Single
    • Boolean
    • Byte

構造体

C言語と同様に構造体も宣言できます。

Type 構造体名
    フィールド名1 As 型名
    フィールド名2 As 型名
End Type

例)

Type person
    name As String
    sex As String
    age As Integer
End Type
Dim tanaka as person
tanaka.name = "shojo"
tanaka.sex = "male"
tanaka.age = 50

for文

For i = 1 To 10
w = w + i
Next

while文

While i < 100 
   i = i + 1 
Wend

if文

If w < 100 Then
w = w + i
End If
' elseが入る場合
If w < 100 Then
w = w + i
Else
w =w * i
End If
If w < 100 Then
w = w + i
ElseIf w>1000
w =w * i
Else

w =w % i

End If

関数定義と利用方法

VBAでは、C言語における関数に相当するものが二種類あります。

    • サブモジュール(Sub) ・・・ 戻り値がないもの
    • ファンクション(Function) ・・・ 戻り値があるのも

というように戻り値の有無で使い分けます。

Private Sub UserForm_Click()
    Dim z As Integer   

test1 6

    z = test2(6)
    MsgBox "ファンクションからの戻り値=" & z
End Sub
Sub test1(x As Integer)
    MsgBox "サブにてx= " & x
End Sub
Function test2(x As Integer)
    Dim y As Integer
    y = x * 2
    test2 = y  '戻り値の設定(いわゆるreturnと同義)
End Function

戻り値の設定については、ファンクションに対して値を代入するというちょっと独特の方法ですので注意してください。

そして、関数の呼び出し方も違いがあります。

'(Subの場合)
test1 6
'(Functionの場合)
z = test2(6)

上記2つの違いはわかりますか? test1はSubなので引数を書くところに括弧はありません。一方、test2はFunctionなので括弧があります。後者の書き方はC言語で馴染みがありますが、前者は違和感を感じるかもしれません。注意してください。

プロパティの書き方(上級者向け)

プロパティはPublicな変数を用意するよりも安全かつ便利であるので、プロパティの利用をお勧めする。

Dim MyID As String
Public Property Let id(v_id As String)
  MyID = v_id
End Property 
Public Property Get id() As String
  id = MyID
End Property