|
こんばんは。
>
>なぜその方がそういうコードを書かれたのかわかりませんが、
>エラーが出なかったのが不思議だったので、質問させて
>いただきました。
Sub test()
Dim g0 As Long
Dim a As String
For g0 = 1 To 10
Dim a As String
a = a & "1"
Next
MsgBox a
End Sub
これで発生するエラーって、コンパイルエラーですよね?
つまり、コードを実行前に行う文法チェックの結果発生するエラーです。
2度同じ変数が宣言されているのですから、文法エラーになります。
Sub test1()
Dim g0 As Long
For g0 = 1 To 10
Dim a As String
a = a & "1"
Next
MsgBox a
End Sub
↑これは、あくまでも aの宣言は、一度しか記述されていませんから、
文法的に問題がない、というよりそこまで文法的にチェックはしていない
と言うことなんです。
Dim a As Stringという記述から実行時には、最初に領域として確保されていますから、
実際には無視されるということです。
test1は、1111111111 と表示されますよね?
|
|