
以下のプログラムをあげます。
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
次
続く
にだんだん増えていきます。
プログラム内はどのように処理してるのでしょうか?
よろしくおねがいします。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.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 = "" が実行されるので、初期化される事になります。
No.1
- 回答日時:
>プログラム内はどのように処理してるのでしょうか?
何を知りたいのかいまいちですが。
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 = ""
の場所を変えてみて、ご希望の表示にしてみてください。
ありがとうございます。
そのようにすれば、うまく行くのはわかるんですが、
質問のようにしたらなぜ増えていくのかがうまく理解できません。
つたない質問で失礼しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでの一時停止と再開の方法
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
WinAPI「MsgWaitForMultipleObj...
-
VBA for i=1 to lastrow
-
ダイアログのテキストにマウス...
-
「偶数・奇数の和」のフローチ...
-
UWSCの終了の仕方
-
多重ループの抜けだし方
-
UWSCに制限時間を付けたいです
-
アクティブセルから、A列最終行...
-
再帰関数のインライン展開
-
CSVファイルの特定の行だけを読...
-
Providence PEC-02 接続方法
-
ExcelVBA FindNextを使用して条...
-
VB2010でCSVファイルの読み込み
-
vb.netです。2次元配列の要素を...
-
エクセルの当番表を作っていま...
-
VBAの変数は何故「i」から始ま...
-
UWSCのスクリプトで行き詰って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
UWSCの終了の仕方
-
CSVファイルの特定の行だけを読...
-
範囲指定したセルを1つずつ飛...
-
UWSCに制限時間を付けたいです
-
Escキーを押すと、中断する時と...
-
乱数の桁数指定、または範囲指定。
-
VBA for i=1 to lastrow
-
流れ図(フローチャート)が分か...
-
DOSコマンドのループ内のTIMEコ...
-
pythonでファイルのコメント行...
-
素数表について。
-
VBAでの一時停止と再開の方法
-
「偶数・奇数の和」のフローチ...
-
DoEventsが必要な理由について
-
vb.netです。2次元配列の要素を...
-
Do whileでExitせず、ループの...
-
ループフリー
-
エクセルの当番表を作っていま...
-
VBAで3秒だけ時間を止めたい
おすすめ情報
最初の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”を返す。この繰り返し。
ありがとうございます。
初期化の msg = ”” はいったんmsgという変数を空欄に戻すという作業であって
なにか決まった形式のようなものかと思っていました。