dポイントプレゼントキャンペーン実施中!

EXCEL2010マクロの初心者です。基本的なことを質問します。ループ処理がうまくいかないのでループ処理で変数を表示させたらnull値になっていました。なぜでしょうか。宜しくお願いします。
-----------------------------------------------------
Sub 例題()
Dim hen as integer '変数
Dim cnt as integer 'くりかえし回数
hen = 1
cnt = 1
MsgBox("処理前hen = " & hen )
For cnt = 1 to 10
call サブ
Next cnt

End sub
-----------------------------------------------------
sub サブ()
MsgBox("サブhen = " & hen )

End sub
-----------------------------------------------------

A 回答 (1件)

こんにちは。



今、VBAのレベルはどのぐらいですか? 1ヶ月目、2ヶ月目?
テキストは使っらっしゃいますか?

初心者といっても、サブ・プロシージャに手を付けているのですから、ここまで来るには、それなりの勉強はしたはずです。初心者で、いきなりということはありえません。もし、いきなりでしたら、最初から順序よく勉強したほうがよいです。この問題の意図は分かりますが、回答者が答えてもしょうがないような気がします。

>なぜでしょうか。
分かりません。Null値の出る要素が見当たりません。何か、コードで見せられていない部分があると思われます。Null値は、一般的には、Variant型の変数に入りますが、自動的に入ることは私の記憶には覚えがありません。

ここの題材は、「モジュール変数」のことだと思います。しかし、それにしてはヘンなコードです。
ヒントだけ書いておきます。後は、ネットで知らべてください。

'//
Sub 例題()
Dim hen as integer  '変数 ←モジュール変数にする
Dim cnt as integer  'くりかえし回数 As が小文字、Integerの先頭の Iが小文字
hen = 1
cnt = 1 '←不要
MsgBox("処理前hen = " & hen )
For cnt = 1 to 10
  call サブ
Next cnt

End sub
'-----------------------------------------------------
sub サブ()
MsgBox("サブhen = " & hen )
~   '←ここに hen = hen +1 が入ったりする
End sub
'-----------------------------------------------------
    • good
    • 0
この回答へのお礼

ありがとうございました。

>最初から順序よく勉強した方が…

仰る通りです。
初歩的な知識が抜けていました。
call命令での変数の引渡し記述が抜けていました。
VBは数年前にかじった程度なので
思い出しながら苦労しています。
ありがとうございました。

お礼日時:2015/02/16 14:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!