以下のプログラムをあげます。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) Excel-VBAの「しばらくお待ちください」のダイアログが自動的に閉じない 2 2023/05/24 15:31
- Visual Basic(VBA) 数字が「0」の列を削除するため、下記のコードを実行しましたが、コンパイルエラーSubまたはFunct 3 2022/12/04 00:00
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Visual Basic(VBA) VBA 配列を使ったコードに直していただけますか 4 2023/05/06 15:18
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
乱数の桁数指定、または範囲指定。
-
プログラミングについて。 1つ...
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
VBA for文が止まらない
-
DoEventsが必要な理由について
-
テキストボックスの名前に変数...
-
UWSCの終了の仕方
-
vb.netです。2次元配列の要素を...
-
エクセル関数で1〜12の数字がル...
-
Javaでゲーム
-
プログラムはif文とforループが...
-
vbscriptでIE自動入力(途中で...
-
範囲指定したセルを1つずつ飛...
-
エクセルの当番表を作っていま...
-
Pro Tools の 波形を伸ばす方...
-
select case について
-
sscanfより速い方法について。
-
ListBox 複数選択 で オートフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
画面を強制的に再描画させる方法
-
VBAで3秒だけ時間を止めたい
-
VBAでの一時停止と再開の方法
-
どなたかこのプログラミングを...
-
Escキーを押すと、中断する時と...
-
UWSCの終了の仕方
-
エクセルの当番表を作っていま...
-
VBA for i=1 to lastrow
-
「偶数・奇数の和」のフローチ...
-
アクティブセルから、A列最終行...
-
DoEventsが必要な理由について
-
vb.netからエクセル関数書き込み
-
GIFアニメをループさせたくない
-
DOSコマンドのループ内のTIMEコ...
-
範囲指定したセルを1つずつ飛...
-
流れ図(フローチャート)が分か...
-
乱数の桁数指定、または範囲指定。
-
テキストボックスの名前に変数...
-
CSVファイルの特定の行だけを読...
-
vb.netです。2次元配列の要素を...
おすすめ情報
最初の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という変数を空欄に戻すという作業であって
なにか決まった形式のようなものかと思っていました。