「Visual Basic for Applications/言語仕様」の版間の差分
削除された内容 追加された内容
Semi-Brace (トーク | 投稿記録) M added Category:Visual Basic for Applications using HotCat |
Semi-Brace (トーク | 投稿記録) 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のドキュメントを参照。
演算子
この節は書きかけです。この節を編集してくれる方を心からお待ちしています。
出典
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/data-type-summary 2020年10月31日閲覧。
- ^ 2.0 2.1 64ビットの実行環境のみ
- ^ 32ビットの実行環境のみ
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/glossary/vbe-glossary#empty
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/variant-data-type
- ^ 6.0 6.1 https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/boolean-data-type 2020年10月31日閲覧。
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-ifthenelse-statements
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-doloop-statements
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-fornext-statements