基本的には使う直前に定義すべきだと俺は思うけどね。

「嵌る」というのはループ内の定義箇所で変数の値がデフォルト値に初期化されると
(誤って)期待した場合だと思うけど、それはむしろきちんと明示的に初期化しない
ことの方に問題がある。

あとVB6だと見た目ブロック内スコープに見えても実際のスコープは関数内、
っていうのも仕様としてはいやらしいけど、あまり問題にならんと思う。