電子書籍の厳選無料作品が豊富!

Do Until k > 12
If lbl_TenNm2(k).Caption <> "" Then

Result = MsgBox("☆☆☆本日の品は☆☆☆" & vbCrLf & _
"『" & ラベル店名(0).Caption & "』" & "の" & vbCrLf & _
ラベル(k) & "を" & テキスト(k).Text & "個" & vbCrLf & _
"でよろしいですか?", vbYesNo, "確認")
End If

k = k + 1

Loop

メッセージボックスで配列のラベルに入ったものを一度に表示したい場合どのような方法をとればよいのかまったく分かりません。もし、何か良い方法がおわかりの方がいましたら、教えてください。
お願いします。

上記の方法だと、メッセージボックスがその配列の数だけ出てきてしまいます。

A 回答 (3件)

こんにちは、Mataroといいます。


質問の件ですが、MsgBoxをループ内に入れているのが問題です。先に表示する文字列を結合してからMsgBoxを使用すれば問題ありません。以下にあなたのプログラムを改造した例を載せます。
ちなみにmojiは表示する文字列です。
-----------------------
dim moji as string

moji = "☆☆☆本日の品は☆☆☆" & vbCrLf & _
"『" & ラベル店名(0).Caption & "』"& _
"の" & vbCrLf

Do Until k > 12
If lbl_TenNm2(k).Caption <> "" Then
moji = moji & ラベル(k) & "を" & テキスト(k).Text & "個" & vbCrLf
End If

k = k + 1

Loop

moji = moji & "でよろしいですか?",

Result = MsgBox(moji, vbYesNo, "確認")

------------------------

これで動くと思います。
(ちなみにこのプログラムだと毎回12回ループすることになるのでDo ~ Loopの条件を見直せば処理効率も上がりますよ。
では、頑張ってください。
    • good
    • 0
この回答へのお礼

やはり、Msgboxをループ内に入れてるのが問題でしたよね。。。
Redimで格納領域を作ってみたりと色々やっては見たんですが。。。
そのような方法で格納できるのは勉強になりました。

教えていただいたとおりに実行してみましたところ、無事解決させて頂きました。
本当にありがとうございます。
これからもっと勉強していきたいと思いますのでアドバイスよろしくお願いします。

お礼日時:2002/08/15 09:31

具体的なソースは他の方が完璧に答えていらっしゃるので、


考え方だけ述べますね。

まず
1、配列の中身を表示したい形でバッファ(メモリ領域のこと)に格納する。
 #2の方のソースの下記部分です。
  Do Until k > 12
  If lbl_TenNm2(k).Caption <> "" Then
  moji = moji & ラベル(k) & "を" & テキスト(k).Text & "個" & vbCrLf
  End If
  k = k + 1
  Loop

2、配列の中身を全て取得したら、処理の結果としてメッセージボックスを出す。
 #2の方のソースの下記部分です。
  Result = MsgBox(moji, vbYesNo, "確認")

つまり、メッセージボックスは全ての処理の最後の結果であって、
それまでにメッセージとして出す文字列を加工する必要がある、ということですね。
このように論理的に考えることが一番重要です。
がんばって!
    • good
    • 0
この回答へのお礼

方法がまったく見当がつかない状態だったので、説明して頂いてなるほど。。。と理解できました。
自分のやりたい事はハッキリとしてはいるのですが、論理的に考えるといったことがいつもできず、行き詰まってしまいます。
アドバイスありがとうございました。

お礼日時:2002/08/15 09:38

ラベルの例でなくテキストボックスの例ですが


コントロール配列の例ではないですが
下記は参考になりませんか。
テキストボックス3つ、コマンドボタン1つ
配置して、実行。テキストに文字を入れ
コマンドボタンをクリック。
Private Sub Command1_Click()
Dim s As String
s = ""
s = s & Text1.Text & vbCrLf
s = s & Text2.Text & vbCrLf
s = s & Text3.Text
MsgBox s
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
imogasiさんのアドバイスはこれからの参考にしていきたいと思います。
またよろしくお願いします。

お礼日時:2002/08/15 09:23

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

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報