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

出典: フリー教科書『ウィキブックス(Wikibooks)』
削除された内容 追加された内容
ifとDo LoopとFor
132 行 132 行
cccc
cccc
</syntaxhighlight>
</syntaxhighlight>
== 構文 ==
=== If...Then...ElseIf...Else...End If文 ===
Ifの後に0個以上のElseif、その後に最大1個のElse節が出現することができる<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-ifthenelse-statements</ref>。
<syntaxhighlight lang="vb">
If x = 1 Then
REM ここにxが1と等しい時の処理
Elseif y = 1 Then
REM ここにxが1と等しくなく、yが1と等しい時の処理
Else
REM どちらでもない時の処理
End If
</syntaxhighlight>

=== 繰り返し構文 ===
Do...Loopは条件式を使用した繰り返しを行う。以下の種類がサポートされている<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-doloop-statements</ref>。以下の例で、{{code|cond}}はループの条件式である。
<syntaxhighlight lang="vb">
'ループに入る前にcondが評価される
Do While cond
'condがTrueの間繰り返される処理
Loop

'ループに入る前にcondが評価される
Do Until cond
'condがFalseの間繰り返される処理
Loop

'ループに入って、1回目の実行が終わった後に評価される
Do
'condがTrueの間繰り返される処理
Loop While cond

'ループに入って、1回目の実行が終わった後に評価される
Do
'condがFalseの間繰り返される処理
Loop Until cond
</syntaxhighlight>
Do...Loopから抜けるためにはExit Doを使用する。

また、For...Nextは開始値、終了値、増分を指定してループを行う<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-fornext-statements</ref>。以下の例で、iはループ変数である。
<syntaxhighlight lang="vb">
' i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
For i = 0 To 10
' iを使った処理...
Next i
</syntaxhighlight>

<syntaxhighlight lang="vb">
' i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
For i = 0 To 10 Step 1
' iを使った処理...
Next i
</syntaxhighlight>

<syntaxhighlight lang="vb">
' i = 0, 2, 4, 6, 8, 10
For i = 0 To 10 Step 2
' iを使った処理...
Next i
</syntaxhighlight>

<syntaxhighlight lang="vb">
' i = 10, 8, 6, 4, 2, 0
For i = 10 To 0 Step -2
' iを使った処理...
Next i
</syntaxhighlight>

注釈:
* For...Nextを抜ける際にはExit Forを使う。
* Next iはNextと同じ意味である。
* 開始値、終了値、増分を小数にした場合は誤差で意図した回数にならないことがある。

For Each...Nextは、''反復可能''なオブジェクトを反復することに使われる。ユーザーが作成したクラスを''反復可能''にするためには[https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-for-eachnext-statements Microsoftのドキュメント]を参照。

=== 演算子 ===
{{節スタブ}}
== 出典 ==
== 出典 ==
{{reflist}}
{{reflist}}

2020年11月2日 (月) 08:55時点における版

基本的にはVisual Basicと同じですが、一部違う箇所があります。

データ型

組み込みで定義されているデータ型の詳細は以下のとおりです[1]

名前 バイト数 格納可能なデータ type-declaration character
Boolean 2 True または False
Byte 1 0 から 255 までの整数
Collection 不定 不定
Currency 8 -922337203685477.5808 から 922337203685477.5807 まで @
Date 8 100年1月1日から9999年12月31日まで
Decimal 14 ±79,228,162,514,264,337,593,543,950,335を上限と下限とする、
精度が最大28桁の任意の整数あるいは実数
Dictionary 不定 不定
Double 8
(w:倍精度浮動小数点数)
#
Integer 2 -32768 から 32767 まで %
Long 4 -2147483648 から 2147483647 まで &
LongLong[2] 8 -9223372036854775808 から 9223372036854775807 まで ^
LongPtr 4[3] Long に準じる
8[2] LongLong に準じる
Object 不定 任意の32ビット空間への参照[4]
Single 4
(w:単精度浮動小数点数)
!
String 10 + (文字列の長さ) 最長約20億字の可変長文字列 $
(文字列の長さ) 最長約65400字の固定長文字列
Variant 16 実際に格納されている数値型の上限下限に準じる N/A[5]
22 + (文字列の長さ) 可変長文字列に応じる

※配列のバイト数は以下の総和である:

  • 固定で20バイト
  • (配列の次元数) × 4バイト
  • 要素が占めるバイト数の合計

暗黙の型変換

  • Boolean→数値型[6]
    • False→0
    • True→-1
  • 任意の型→Boolean[6]
    • 0→False
    • それ以外→True
  • Empty→Variant
    • 期待される型が数値型→0
    • 期待される型が文字列型→""

型付け

  • 関数の仮引数、戻り値、プロパティ、及び変数に対して型付けをすることができる
  • 型付けをしなかった場合は暗黙でVariant型となる

リテラル

  • universal date format

値渡し/参照渡し

  • ByVal: 値渡し
  • ByRef: 参照渡し

行継続

  aaaa _
  bbbb _
  cccc

構文

If...Then...ElseIf...Else...End If文

Ifの後に0個以上のElseif、その後に最大1個のElse節が出現することができる[7]

If x = 1 Then
  REM ここにxが1と等しい時の処理
Elseif y = 1 Then
  REM ここにxが1と等しくなく、yが1と等しい時の処理
Else
  REM どちらでもない時の処理
End If

繰り返し構文

Do...Loopは条件式を使用した繰り返しを行う。以下の種類がサポートされている[8]。以下の例で、condはループの条件式である。

'ループに入る前にcondが評価される
Do While cond
'condがTrueの間繰り返される処理
Loop

'ループに入る前にcondが評価される
Do Until cond
'condがFalseの間繰り返される処理
Loop

'ループに入って、1回目の実行が終わった後に評価される
Do
'condがTrueの間繰り返される処理
Loop While cond

'ループに入って、1回目の実行が終わった後に評価される
Do
'condがFalseの間繰り返される処理
Loop Until cond

Do...Loopから抜けるためにはExit Doを使用する。

また、For...Nextは開始値、終了値、増分を指定してループを行う[9]。以下の例で、iはループ変数である。

' i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
For i = 0 To 10
' iを使った処理...
Next i
' i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
For i = 0 To 10 Step 1
' iを使った処理...
Next i
' i = 0, 2, 4, 6, 8, 10 
For i = 0 To 10 Step 2
' iを使った処理...
Next i
' i = 10, 8, 6, 4, 2, 0
For i = 10 To 0 Step -2
' iを使った処理...
Next i

注釈:

  • For...Nextを抜ける際にはExit Forを使う。
  • Next iはNextと同じ意味である。
  • 開始値、終了値、増分を小数にした場合は誤差で意図した回数にならないことがある。

For Each...Nextは、反復可能なオブジェクトを反復することに使われる。ユーザーが作成したクラスを反復可能にするためにはMicrosoftのドキュメントを参照。

演算子

この節は書きかけです。この節を編集してくれる方を心からお待ちしています。

出典