
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
メッセージボックスで配列のラベルに入ったものを一度に表示したい場合どのような方法をとればよいのかまったく分かりません。もし、何か良い方法がおわかりの方がいましたら、教えてください。
お願いします。
上記の方法だと、メッセージボックスがその配列の数だけ出てきてしまいます。
No.2ベストアンサー
- 回答日時:
こんにちは、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の条件を見直せば処理効率も上がりますよ。
では、頑張ってください。
やはり、Msgboxをループ内に入れてるのが問題でしたよね。。。
Redimで格納領域を作ってみたりと色々やっては見たんですが。。。
そのような方法で格納できるのは勉強になりました。
教えていただいたとおりに実行してみましたところ、無事解決させて頂きました。
本当にありがとうございます。
これからもっと勉強していきたいと思いますのでアドバイスよろしくお願いします。
No.3
- 回答日時:
具体的なソースは他の方が完璧に答えていらっしゃるので、
考え方だけ述べますね。
まず
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, "確認")
つまり、メッセージボックスは全ての処理の最後の結果であって、
それまでにメッセージとして出す文字列を加工する必要がある、ということですね。
このように論理的に考えることが一番重要です。
がんばって!
方法がまったく見当がつかない状態だったので、説明して頂いてなるほど。。。と理解できました。
自分のやりたい事はハッキリとしてはいるのですが、論理的に考えるといったことがいつもできず、行き詰まってしまいます。
アドバイスありがとうございました。
No.1
- 回答日時:
ラベルの例でなくテキストボックスの例ですが
コントロール配列の例ではないですが
下記は参考になりませんか。
テキストボックス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
回答ありがとうございます。
imogasiさんのアドバイスはこれからの参考にしていきたいと思います。
またよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
OutOfMemoryExceptionの回避策...
-
複数のtextboxの処理を一括で行...
-
Dir関数で読み取り順を操作でき...
-
VBScriptでCSVファイルを読み出...
-
Excelのメモリ(配列)の上限は2G...
-
エクセルでXY座標に並べられた...
-
コンボボックスのインデックス...
-
レコードセットの中身を配列に...
-
VB.NETの配列の限界を教えてく...
-
グラフの「項目軸ラベルに使用...
-
配列のペースト出力結果の書式...
-
配列の中の最大値とそのインデ...
-
VBA フォルダ内のファイルを、...
-
VB.NETの配列にExcelから読み込...
-
VBで配列に格納されているデー...
-
配列の要素がすべてカラかどう...
-
定数配列の書き方
-
クイズゲームのフォームについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
vba フィルター 複数条件 3つ以...
-
配列のペースト出力結果の書式...
-
複数のtextboxの処理を一括で行...
-
Excelのメモリ(配列)の上限は2G...
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
構造体配列内の文字列検索のよ...
-
VBAでMODE関数をつくる
-
Redim とEraseの違いは?
-
VBScriptでCSVファイルを読み出...
-
VB6のメモリ解放に関して
-
VB.NETの配列にExcelから読み込...
-
Segmentation Fault (メモリ制限?)
-
ActiveReports(アクティブレポ...
おすすめ情報