VBScript

変数と配列変数は分離しているか?

Dim X(3) X = "foo" X(0) = "FOO" MsgBox X MsgBox X(0) 分離していない。「型が一致しません。」のエラー。

大文字小文字の区別

x = "foo" X = "FOO" MSGBOX x ' FOO MSGBOX X ' FOO

継続行

MsgBox "foo" & _ " bar" リファレンスには載っていなかった???

VBScript のステートメント、With ステートメント

Class Foo Function foo1 MsgBox "foo1" End Function Function foo2 MsgBox "foo2" End Function End Class Set obj = New Foo With obj .foo1 .foo2 End With 入れ子 Class Foo Function foo1 MsgBox "foo1" End Function Function foo2 MsgBox "foo2" End…

VBScript のステートメント、While ... Wend ステートメント

While Null MsgBox "foo" Wend x = 0 While x < 1 MsgBox x & " : " & "bar" x = x + 1 Wend Exit するのはないの?

VBScript のステートメント、Select Case ステートメント

数値 x = 10 Select Case x Case 10 MsgBox "1 : " & x Case 20 MsgBox "2 : " & x Case 20 MsgBox "3 : " & x Case Else MsgBox "4 : " & x End Select 条件が重複していても怒られないようだ 文字列 x = "bar" Select Case x Case "foo" MsgBox "1 : " & x…

VBScript のステートメント、Rem ステートメント

MsgBox "foo" ' hoge MsgBox "foo" : Rem hoge Rem MsgBox "foo"

VBScript のステートメント、ReDim ステートメント

Dim A() ReDim A(10,1) A(0,0) = 1 A(0,1) = "foo" ReDim Preserve A(10,1) MsgBox A(0,0) MsgBox A(0,1) 「最大 60 次元まで宣言することができます」。なぜ、60?

VBScript のステートメント、Randomize ステートメント

まんま Dim MyValue, Response Randomize ' 乱数ジェネレータを初期化します。 Do Until Response = vbNo MyValue = Int((6 * Rnd) + 1) ' 1 〜 6 のランダムな値を生成します。 MsgBox MyValue Response = MsgBox ("繰り返しますか ? ", vbYesNo) Loop 同じ…

VBScript のステートメント、Property Set ステートメント

オブジェクトへの参照を設定するものらしい。 Class Foo Private m_x Public Property Set x(val) Set m_x = val End Property Public Property Get x Set x = m_x End Property End Class Set x = new Foo Set x.x = new Foo MsgBox x.x.x で「オブジェクト…

VBScript のステートメント、Property Get, Let ステートメント

Class Foo Private m_x Public Property Let x(val) m_x = val End Property Public Property Get x x = m_x Exit Property MsgBox "foo" End Property End Class Set x = new Foo x.x = 1 MsgBox x.x 引数のリストはどう使う?(特に Get の場合は?Let の場…

VBScript のステートメント、Private ステートメント

Option Explicit Private x Function foo MsgBox x End Function x = 1 foo 「Class ブロックで宣言します。」となっていたが、そうでもない??? トップ階層も何かの Class 内なのか???

VBScript のステートメント、Option Explicit ステートメント

Option Explicit Dim x Function foo MsgBox x End Function x = 1 foo Option Explicit Dim x Function foo Dim x MsgBox x End Function x = 1 foo

VBScript のステートメント、On Error ステートメント

まんま On Error Resume Next Err.Raise 6 ' オーバーフロー エラーを発生させます。 MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description) Err.Clear ' エラーのクリア。 ページでは、MsgBox の最後の括弧が抜けていた

VBScript のステートメント、If...Then...Else ステートメント

If 1=1 Then MsgBox "1=1" Else MsgBox "1<>1" If 1=1 Then MsgBox "1=1" : MsgBox "1=1" Else MsgBox "1<>1"

VBScript のステートメント、Function ステートメント

ByRef の挙動確認 Function foo(ByRef x) x = 10 End Function x = 1 MsgBox x ' 1 foo(x) MsgBox x ' 1 foo x MsgBox x ' 10 再帰 Function foo(x) MsgBox x If x = 0 Then Exit Function End If foo(x-1) End Function foo(2) 外部で宣言された変数への影…

VBScript のステートメント、For Each...Next ステートメント

Dim ary(2) ary(0) = "foo" ary(1) = "bar" ary(2) = "baz" For Each x In ary MsgBox x Next

VBScript のステートメント、For ... Next ステートメント

For x = 1 To 2 Step 2 MsgBox x Next For x = 3 To 1 Step -1 MsgBox x Next Dim a(3) a(0) = 1 For a(0) = 1 To 2 Step 2 ' `for`ループを制御する変数が不正です。 MsgBox a(0) Next

VBScript のステートメント、Exit ステートメント

まんま Sub RandomLoop Dim I, MyNum Do ' 無限のループを設定します。 For I = 1 To 1000 ' ループを 1000 回繰り返します。 MyNum = Int(Rnd * 100) ' ランダムな数字を生成します。 Select Case MyNum ' ランダムな数値を求めます。 Case 17: MsgBox "Cas…

VBScript のステートメント、ExecuteGlobal ステートメント

ほぼまんま Dim X ' グローバル スコープで X を宣言します。 X = "Global" ' グローバルな X に値を代入します。 Sub Proc1 ' プロシージャを宣言します。 Dim X ' ローカル スコープで X を宣言します。 X = "Local" ' ローカルな X に値を代入します。 ' …

VBScript のステートメント、Execute ステートメント

ほぼ、まんま(Print を MsgBox に変更) Dim X ' グローバル スコープで X を宣言します。 X = "Global" ' グローバルな X に値を代入します。 Sub Proc1 ' プロシージャを宣言します。 Dim X ' ローカル スコープで X を宣言します。 X = "Local" ' ローカル…

VBScript のステートメント、Erase ステートメント

まんま Dim NumArray(9) Dim DynamicArray() ReDim DynamicArray(9) ' メモリを割り当てます。 Erase NumArray ' 各要素を再初期化します。 Erase DynamicArray ' 配列が使っていたメモリを解放します。

VBScript のステートメント、Do...Loop ステートメント

Dim ステートメントはスキップ Do MsgBox "foo" Exit Do Loop x = 0 Do While x = 0 MsgBox "foo " & x x = 1 Loop x = 0 Do Until x = 1 MsgBox "foo " & x x = 1 Loop x = 1 Do MsgBox "foo " & x Loop While x = 0 x = 1 Do MsgBox "foo " & x Loop Until…

VBScript のステートメント、Const ステートメント

Const c1 = 1 'c1 = 2 MsgBox c1 'Const c2 = c1 Function foo MsgBox c1 End Function foo Const c3 = 3, c4 = 4 MsgBox c3 & " " & c4

VBScript のステートメント、Class ステートメント

Class foo Public x Public Sub y MsgBox "y" End Sub End Class Set obj = New foo obj.x = "FOO" MsgBox obj.x obj.y

VBScript のステートメント、Call ステートメント

Function foo MsgBox "foo" End Function foo Call foo Function foo(arg) MsgBox arg End Function foo "a" foo("a") Call foo("a")

VBScript のプロパティ、Value プロパティ

まんま Function RegExpTest(patrn, strng) Dim regEx, Match, Matches ' 変数を作成します。 Set regEx = New RegExp ' 正規表現を作成します。 regEx.Pattern = patrn ' パターンを設定します。 regEx.IgnoreCase = True ' 大文字と小文字を区別しないよう…

VBScript のプロパティ、Source プロパティ

まんま On Error Resume Next Err.Raise 6 ' オーバーフロー エラーを発生させます。 MsgBox ("エラー番号 " & CStr(Err.Number) & " " & Err.Description & Err.Source) Err.Clear ' エラーのクリア。

VBScript のプロパティ、Pattern プロパティ \n, \xn

Set r = New RegExp str = "a" & vbTab & "b" r.Pattern = "a\11b" Set Matches = r.Execute(str) MsgBox Matches(0) ' a b r.Pattern = "a\011b" Set Matches = r.Execute(str) MsgBox Matches(0) ' a b str = "aA" r.Pattern = "\x41" Set Matches = r.Exe…

VBScript のプロパティ、Pattern プロパティ \num

Set r = New RegExp str = "1233" r.Pattern = "(.)\1" Set Matches = r.Execute(str) MsgBox Matches(0) ' 33 str = "112233" r.Pattern = "(.)\1(.)\2(.)\3" Set Matches = r.Execute(str) MsgBox Matches(0) ' 112233 str = "112233333" r.Pattern = "(.)…