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

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=""』は何故必要なのでしょうか?

A 回答 (4件)

#2の回答で 間違いがあるようです



myStr = myStr & i * j & " "
の命令は myStrに i*jの演算結果の文字列とスペース1個を追加する
と言った内容です

i=2, j=3 だったら myStrには "6 "が追加されます
"2*3 "の文字列生成はされません

"2*3 "を生成するなら
myStr = myStr & i & "*" & j & " "
としないといけません
    • good
    • 0
この回答へのお礼

そうですね。最初、ちょっと戸惑いがありましたが理解できました。ありがとうございました

お礼日時:2008/04/06 08:43

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やエクセルのセルやテキストボックスにセットするとき
セット・表示する内容は、右辺です。
    • good
    • 0
この回答へのお礼

なるほど。勉強になります。ありがとうございました。

お礼日時:2008/04/06 08:42

(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にする際、変数をリセット
 (消去)させるため。(そうしないと文字列が延々長くなる)
&は文字列と文字列をつなげる意味を表します。
    • good
    • 0
この回答へのお礼

なるほど。具体的な説明ありがとうございました。

お礼日時:2008/03/30 14:55

1.プログラミング言語特有の書き方でもとのmyStrに i*j  を追加したものをmyStrに代入するとうことです。


2.についてはどんどん追加されていくので間にスペースをいれて見やすくしているのでしょう。
    • good
    • 0
この回答へのお礼

プログラミング言語特有の書き方なんですね。ありがとうございました

お礼日時:2008/03/30 14:53

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