プロが教えるわが家の防犯対策術!

以下のプログラムをあげます。

Private Sub cmdkuku2_Click()

'定数
Dim i As Integer '最初の数字
Dim j As Integer '最初の数字にカケル数字
Dim kake As Integer '掛け算
Dim msg As String '並べる

'初期値
msg = ""

'カウント
For i = 1 To 9

For j = 1 To 9
kake = i * j
kake = Str(kake)
msg = msg & " " & kake
Next j

MsgBox msg
Next i

End Sub

こうした場合、ダイアログボックスに返ってくるものは、
1 2 3 4 5 6 7 8 9

1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18

1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18 3 6 9 12 15 18 21 24 27

続く

にだんだん増えていきます。
プログラム内はどのように処理してるのでしょうか?

よろしくおねがいします。

質問者からの補足コメント

  • 最初のjカウントで一度msgに「1 2 3 4 5 6 7 8 9」 が入ります、そしてmsgbox”1 2 3 4 5 6 7 8 9” が返される。次にi=2になるので、j=1~9まで計算して、msg=”1 2 3 4 5 6 7 8 9” & " " & kakeのkakeとmsgはどんどん更新され、i=1で「msg=msg & " " & kake」でmsg=”1 2 3 4 5 6 7 8 9 2”が格納され、msg”1 2 3 4 5 6 7 8 9 2”で、つぎに"1 2 3 4 5 6 7 8 9 2 4"・・というぐあいに増えていき、jループを抜けて次のmsgboxに”1 2 3 4 5 6 7 8 9 2 4 6 8 10 12 14 16 18”を返す。この繰り返し。

      補足日時:2015/04/14 06:29
  • ありがとうございます。

    初期化の msg = ”” はいったんmsgという変数を空欄に戻すという作業であって
    なにか決まった形式のようなものかと思っていました。

    No.2の回答に寄せられた補足コメントです。 補足日時:2015/04/14 06:30

A 回答 (2件)

言葉にするのが難しいですが


msg = ""

'カウント
For i = 1 To 9

For j = 1 To 9
の場合
msg = "" がForのループの外側にありますよね。
初期化が、最初の一回だけですので
繰り返しの文だけ、増えていきます。

'カウント
For i = 1 To 9
msg = ""
For j = 1 To 9
場合
msg = "" がFor i のループの内側にありますよね。
なので、iのループの度に
msg = "" が実行されるので、初期化される事になります。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます!お礼補足に書いちゃいました。

お礼日時:2015/04/14 06:34

>プログラム内はどのように処理してるのでしょうか?


何を知りたいのかいまいちですが。
msg = msg & " " & kake
なので、だんだん増えていきます。


'カウント
For i = 1 To 9
'初期値
msg = ""
For j = 1 To 9
kake = i * j
kake = Str(kake)
msg = msg & " " & kake
Next j

とか、msg = ""
の場所を変えてみて、ご希望の表示にしてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
そのようにすれば、うまく行くのはわかるんですが、
質問のようにしたらなぜ増えていくのかがうまく理解できません。

つたない質問で失礼しました。

お礼日時:2015/04/12 16:40

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