VBAのArray関数とSplit関数って似ているんですが、変数宣言時にカッコを付ける付けないでエラーになるパターンが違ってややこしいです。
【Split関数でエラーにならないケース】
VBA
1Sub test1() 2 Dim a 3 a = Split("a-i-u-e-o", "-") 4 Debug.Print a(0) 5End Sub
VBA
1Sub test2() 2 Dim a() As String 3 a = Split("a-i-u-e-o", "-") 4 Debug.Print a(0) 5End Sub
VBA
1Sub test3() 2 Dim a() As String 3 a() = Split("a-i-u-e-o", "-") 4 Debug.Print a(0) 5End Sub
【Split関数でエラーになるケース】
VBA
1Sub test4() 2 Dim a() 3 a() = Split("a-i-u-e-o", "-") 4 Debug.Print a(0) 5End Sub
【Array関数でエラーにならないケース】
VBA
1Sub test5() 2 Dim a 3 a = Array("a", "i", "u", "e", "o") 4 Debug.Print a(0) 5End Sub
VBA
1Sub test6() 2 Dim a() 3 a = Array("a", "i", "u", "e", "o") 4 Debug.Print a(0) 5End Sub
VBA
1Sub test7() 2 Dim a() 3 a() = Array("a", "i", "u", "e", "o") 4 Debug.Print a(0) 5End Sub
【Array関数でエラーになるケース】
VBA
1Sub test8() 2 Dim a() As String 3 a() = Array("a", "i", "u", "e", "o") 4 Debug.Print a(0) 5End Sub
リファレンスを見ると、Split関数のほうが
指定された数のサブ文字列が含まれる 0 ベースの 1 次元配列を返します。
Array関数のほうが
配列を含む Variant を返します。
となっているので、ここら辺の違いだとは思うんですが、ノンプログラマーの私には理解ができませんでした。
(一応、静的配列と動的配列の基本的な知識はあるつもりです)
どういうルールでなぜそうなるのか気になって夜しか眠れません。
わかりやすい解説をどうかよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/08 12:37
2021/05/08 12:48 編集
2021/05/08 12:51
2021/05/08 13:04
2021/05/08 13:43