Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11763 / 76734 ←次へ | 前へ→

【70502】Re:ループ中のDIM
発言  ichinose  - 11/11/21(月) 17:42 -

引用なし
パスワード
   こんばんは。

>
>なぜその方がそういうコードを書かれたのかわかりませんが、
>エラーが出なかったのが不思議だったので、質問させて
>いただきました。

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 と表示されますよね?
5 hits

【70498】ループ中のDIM ふねふね 11/11/21(月) 13:08 質問
【70500】Re:ループ中のDIM UO3 11/11/21(月) 15:25 発言
【70501】Re:ループ中のDIM ふねふね 11/11/21(月) 17:24 発言
【70502】Re:ループ中のDIM ichinose 11/11/21(月) 17:42 発言
【70503】Re:ループ中のDIM 追伸 ichinose 11/11/21(月) 17:53 発言
【70507】Re:ループ中のDIM 追伸 ふねふね 11/11/22(火) 9:27 お礼
【70522】Re:ループ中のDIM 追伸 ichinose 11/11/24(木) 8:54 発言

11763 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free