「Visual Basic for Applications/言語仕様」の版間の差分
削除された内容 追加された内容
Semi-Brace (トーク | 投稿記録) ifとDo LoopとFor |
Semi-Brace (トーク | 投稿記録) M編集の要約なし |
||
145 行 | 145 行 | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
=== |
=== Do...Loop === |
||
Do...Loopは条件式を使用した繰り返しを行う。以下の種類がサポートされている<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-doloop-statements</ref>。以下の例で、{{code|cond}}はループの条件式である。 |
Do...Loopは条件式を使用した繰り返しを行う。以下の種類がサポートされている<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-doloop-statements</ref>。以下の例で、{{code|cond}}はループの条件式である。 |
||
<syntaxhighlight lang="vb"> |
<syntaxhighlight lang="vb"> |
||
170 行 | 170 行 | ||
Do...Loopから抜けるためにはExit Doを使用する。 |
Do...Loopから抜けるためにはExit Doを使用する。 |
||
=== For...Next === |
|||
For...Nextは開始値、終了値、増分を指定してループを行う<ref>https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-fornext-statements</ref>。以下の例で、iはループ変数である。 |
|||
<syntaxhighlight lang="vb"> |
<syntaxhighlight lang="vb"> |
||
' i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
' i = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 |
||
204 行 | 205 行 | ||
* 開始値、終了値、増分を小数にした場合は誤差で意図した回数にならないことがある。 |
* 開始値、終了値、増分を小数にした場合は誤差で意図した回数にならないことがある。 |
||
=== ForEach...Next === |
|||
For Each...Nextは、''反復可能''なオブジェクトを反復することに使われる。ユーザーが作成したクラスを''反復可能''にするためには[https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-for-eachnext-statements Microsoftのドキュメント]を参照。 |
For Each...Nextは、''反復可能''なオブジェクトを反復することに使われる。ユーザーが作成したクラスを''反復可能''にするためには[https://docs.microsoft.com/ja-jp/office/vba/language/concepts/getting-started/using-for-eachnext-statements Microsoftのドキュメント]を参照。 |
||
=== 演算子 === |
=== 演算子 === |
||
以下に上げる演算子が存在する (完璧でないリスト)。 |
|||
* {{code|a + b}}: {{code|a}}と{{code|b}}を足す<ref name="implicit-operator-conversation">暗黙の型変換で{{code|a}}や{{code|b}}が数値型に変換されることがある。</ref><ref>https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary</ref> |
|||
* {{code|a - b}}: {{code|a}}から{{code|b}}を引く<ref name="implicit-operator-conversation" /><ref>https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary</ref>。 |
|||
* {{code|a * b}}: {{code|a}}と{{code|b}}を掛ける<ref name="implicit-operator-conversation" /><ref>https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary</ref>。 |
|||
* {{code|a / b}}: {{code|a}}を{{code|b}}で割る<ref name="implicit-operator-conversation" /><ref>https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary</ref>。 |
|||
* {{code|a And b}}: {{code|a}}と{{code|b}}の論理積を求める ('''非'''短絡評価)。 |
|||
* {{code|a Or b}}: {{code|a}}と{{code|b}}の論理和を求める ('''非'''短絡評価)。 |
|||
{{節スタブ}} |
{{節スタブ}} |
||
=== 変数/配列の宣言 === |
|||
== 出典 == |
== 出典 == |
||
{{reflist}} |
{{reflist}} |
2020年11月3日 (火) 02:17時点における版
基本的には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
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
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と同じ意味である。
- 開始値、終了値、増分を小数にした場合は誤差で意図した回数にならないことがある。
ForEach...Next
For Each...Nextは、反復可能なオブジェクトを反復することに使われる。ユーザーが作成したクラスを反復可能にするためにはMicrosoftのドキュメントを参照。
演算子
以下に上げる演算子が存在する (完璧でないリスト)。
a + b
:a
とb
を足す[10][11]a - b
:a
からb
を引く[10][12]。a * b
:a
とb
を掛ける[10][13]。a / b
:a
をb
で割る[10][14]。a And b
:a
とb
の論理積を求める (非短絡評価)。a Or b
:a
とb
の論理和を求める (非短絡評価)。
この節は書きかけです。この節を編集してくれる方を心からお待ちしています。
変数/配列の宣言
出典
- ^ 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
- ^ 10.0 10.1 10.2 10.3 暗黙の型変換で
a
やb
が数値型に変換されることがある。 - ^ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary
- ^ https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/operator-summary