Access VBA の勉強を始めて間もないものですが、あるテキストのFor_Nextステートメント使用の一部分の意味がわかりません。教えてください。
Sub ループのネスト()
Dim i As Integer, j As Integer
Dim myStr As String
'九九の結果を表示する
For i = 1 To 9
For j = 1 To 9
myStr = myStr & i * j & " "
Next j
MsgBox myStr, , i & "の段"
myStr = ""
Next i
End Sub
以上の文面で(1)『myStr = myStr & i * j & " "』でmystrにmyStr & i * j & " "を代入する意味だとは理解できますがmystr&を右辺に記載する意味がわかりません。何故必要でしょうか?
(2)『mystr=""』は何故必要なのでしょうか?
No.4
- 回答日時:
#2の回答で 間違いがあるようです
myStr = myStr & i * j & " "
の命令は myStrに i*jの演算結果の文字列とスペース1個を追加する
と言った内容です
i=2, j=3 だったら myStrには "6 "が追加されます
"2*3 "の文字列生成はされません
"2*3 "を生成するなら
myStr = myStr & i & "*" & j & " "
としないといけません
No.3ベストアンサー
- 回答日時:
Access VBAとあったのでどんな難しいことかと思ったら
これなら、VB,エクセルVBAでも動くないようだ。
エクセルを持っておれば
標準モジュールに張り付け、実行して
シートを見ると良くわかる。
Sub ループのネスト()
Dim i As Integer, j As Integer
Dim myStr As String
'九九の結果を表示する
For i = 1 To 9
For j = 1 To 9
Cells(i, j + 1) = myStr & i * j & " "
Next j
Cells(i, 1) = myStr & i & "の段"
myStr = ""
Next i
End Sub
&は文字列を結合するもの。
この場合エクセルのセルと違ってMsgboxなので1行で1回の表示にしているので1行分は文字列追加累積しているわけ。
これを使うときはある段階・単位で=””でクリアする。
次の行の文字列を作るに入る前に、前行のものは(同じ変数を使うがため)クリアしなければならない。
i*jは本来文字列の扱いだが、VBでは文字列化しなくても
MsgBoxやエクセルのセル、テキストボックスにセットできる。
>右辺に記載する意味がわかりません
Msgboxやエクセルのセルやテキストボックスにセットするとき
セット・表示する内容は、右辺です。
No.2
- 回答日時:
(1)i=1,j=1の時はmyStr = myStr & i * j & " "に
「1*1 」という文字列になります。
i=1,j=2の時「1*1 1*2 」という文字列を生成するため。
(2)j=1~9の後でメッセージボックスの表示は
「1*1 1*2 ~(略)~1*9 」になります。
その後でiをカウントアップして2にする際、変数をリセット
(消去)させるため。(そうしないと文字列が延々長くなる)
&は文字列と文字列をつなげる意味を表します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル マクロ(A1:A10)までの中で一番多く出た数字をB10に表示 6 2023/04/25 17:01
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Visual Basic(VBA) VBA横データを縦にしたいです 2 2023/08/08 19:38
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) userformでSheetを選択して開くコード 1 2023/05/15 16:27
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
VBAでの Replace関数で、ワイル...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
【Excel VBA】複数ある特定の文...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Excelで指数表現しないようにす...
-
VBの「As String * 128」とは?
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列をtxtファイル...
-
ORCLEでの小数の表示方法の変更...
-
Left関数とRight関数を合わせた...
-
Pro c/c++ でホスト変数の後に....
-
VBscriptからバッチに変数を渡...
-
Excelはなんで先頭の0を消すん...
-
16進数を10進数に簡単に変換す...
-
【COBOL】文字列から数値項目に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
Excelで3E8を3.00E+8にしない方...
-
VBAでの Replace関数で、ワイル...
-
Excelで指数表現しないようにす...
-
[C言語]fputsとfprintfの違い
-
エクセルで文字列をtxtファイル...
-
同一セル内に関数と文字列を同...
-
エクセルで文字列の最大値を抽...
-
Excelはなんで先頭の0を消すん...
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
Left関数とRight関数を合わせた...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
Msgboxの×が押されたとき
-
sedなどで、特定の文字列の後の...
-
【Excel VBA】複数ある特定の文...
-
OnTime 使用時のプロシージャへ...
おすすめ情報