「Visual Basic for Applications/言語仕様」の版間の差分

編集の要約なし
M編集の要約なし
編集の要約なし
 
* <syntaxhighlight lang="vb" inline>ByVal</syntaxhighlight>: 値渡し
* <syntaxhighlight lang="vb" inline>ByRef</syntaxhighlight>: 参照渡し
** 参照は、必要に応じてデリファレンスされる。
 
== 行継続 ==
{{節スタブ}}
=== 変数/配列の宣言 ===
<syntaxhighlight lang="vb" inline>Dim</syntaxhighlight>キーワードを使用して宣言する。
<syntaxhighlight lang="vb">
' Variant型
Dim implicitVariant
Dim explicitVariant As Variant
Dim anInteger as Integer
' インデックスが0-originか1-originかはOption Baseによる
Dim strings(3) as String
Dim zeroOriginStringArray(0 To 2) as String
Dim oneOriginStringArray(1 To 3) as String
</syntaxhighlight>
{{コラム|Option Base|
<syntaxhighlight lang="vb" inline>Option Base</syntaxhighlight>を使用することで、添字が0から始まるか (0-origin)、1から始まるか (1-origin) を制御することができる。使用しない場合は、0-originとなるが、上の例の{{zeroOriginStringArray}}、{{code|oneOriginStringArray}}のように個別の宣言で明示されている場合はそちらが優先される。}}
また、複数まとめて宣言することもできる:
<syntaxhighlight lang="vb" line>
' 全てVariant型
Dim v1, v2, v3
' i1のみInteger型
Dim v4, v5, i1 as Integer
' 全てInteger型
Dim i2 as Integer, i3 as Integer, i4 as Integer
</syntaxhighlight>
全ての変数をInteger型とするつもりで、4行目のように書くのは間違いである。正しくは、6行目のように全てを明示的にInteger型と宣言しなければならない。
 
=== Select Case...Case...End Select文 ===
Select Case...Case...End Selectは、値に応じて任意の数の分岐を行うことができる<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-select-case-statements</ref>。C言語やJavaでいうswitchに該当する。
<syntaxhighlight lang="vb">
Select Case qty
Case 1
stringify = "single"
Case 2
stringify = "double"
Case 3
stringify = "triple"
Case Else
stringify = "many"
End Select
</syntaxhighlight>
また、<syntaxhighlight lang="vb" inline>Case</syntaxhighlight>内で値を<syntaxhighlight lang="vb" inline>Is</syntaxhighlight>として参照することができる:
<syntaxhighlight lang="vb">
Select Case qty
Case 1
stringify = "single"
Case 2
stringify = "double"
Case 3
stringify = "triple"
Case Is < 10 ' qtyが10未満
stringify = "many"
Case Else
stringify = "so many"
End Select
</syntaxhighlight>
=== With...End With文 ===
<syntaxhighlight lang="vb" inline>With</syntaxhighlight>文を使用することで、同一のオブジェクトに対して複数プロパティの代入のレシーバをまとめることができる。
 
== 出典 ==
733

回編集