No.2ベストアンサー
- 回答日時:
私の回答ですよね?
考え方は#1さんのおっしゃる通りなので、サンプルを作ってみました。
(私はUnloadしてますが)
どの程度、メッセージボックスに似せればいいのか分からなかったので、
少々長くなってしまいました。
テストをあまりしてませんので、バグがあるかもしれません。
そのまま使わない方がいいかも・・・
★は設定しておけば、プログラム内に書かなくてよいです。
'******* Form1(Main Form) 適当です。********
Private Sub Command1_Click()
If (MsgBox2("testです" & Chr(13) & "いいですか?", vbYesNo, "Test") = vbYes) Then
MsgBox "Yes"
Else
MsgBox "No"
End If
End Sub
'******* Form2(MsgBox)********
'Command1(0)~Command1(2)
'Label1
'を貼り付けてください。
Private Sub Command1_Click(Index As Integer)
Select Case Command1(Index).Caption
Case "OK"
MsgNo = vbOK
Case "Cancel", "キャンセル"
MsgNo = vbCancel
Case "中止"
MsgNo = vbAbort
Case "再試行"
MsgNo = vbRetry
Case "無視"
MsgNo = vbIgnore
Case "はい"
MsgNo = vbYes
Case "いいえ"
MsgNo = vbNo
End Select
Unload Me
End Sub
'******* Module1(標準モジュール)********
Public MsgNo As Long
Public Function MsgBox2(Prompt As String, Optional buttons As VbMsgBoxStyle = vbOKOnly, Optional Title As String) As VbMsgBoxResult
Dim BCnt As Integer 'ボタン数
Dim Y As Long '最後のボタンの右位置
Load Form2
With Form2
'タイトル設定
If (Title <> "") Then
.Caption = Title
Else
.Caption = App.EXEName
End If
'メッセージ設定
With .Label1
.Move 200, 200 '★
.AutoSize = True '★
.Caption = Prompt
'ボタンの設定
Select Case buttons
Case vbOKOnly
Y = Button_Set(.Top + .Height, "OK")
Case vbOKCancel
Y = Button_Set(.Top + .Height, "OK", "Cancel")
Case vbAbortRetryIgnore
Y = Button_Set(.Top + .Height, "中止", "再試行", "無視")
Case vbYesNoCancel
Y = Button_Set(.Top + .Height, "はい", "いいえ", "キャンセル")
Case vbYesNo
Y = Button_Set(.Top + .Height, "はい", "いいえ")
Case vbRetryCancel
Y = Button_Set(.Top + .Height, "再試行", "キャンセル")
End Select
End With
'フォームのサイズおよび表示位置設定
If (.Label1.Left + .Label1.Width > Y) Then
Y = .Label1.Width + .Label1.Left * 2
Else
Y = Y + .Label1.Left * 2
End If
.Move (Screen.Width - .Width) / 2, (Screen.Height - .Height) / 2, Y, .Command1(0).Top + .Command1(0).Height + 500
'メッセージボックス表示
.Show vbModal
End With
MsgBox2 = MsgNo
End Function
Private Function Button_Set(ByVal CapY As Long, ByVal Cap0 As String, Optional ByVal Cap1 As String = "", Optional ByVal Cap2 As String = "") As Long
Dim Y As Long
With Form2
With .Command1(0)
.Top = CapY + 200
.Left = 200 '★
.Caption = Cap0
Y = .Left + .Width
End With
With .Command1(1)
If (Cap1 <> "") Then
.Top = CapY + 200
.Left = .Parent.Command1(0).Left + .Parent.Command1(0).Width + 200 '★
.Caption = Cap1
Y = .Left + .Width
Else
.Visible = False
End If
End With
With .Command1(2)
If (Cap2 <> "") Then
.Top = CapY + 200
.Left = .Parent.Command1(1).Left + .Parent.Command1(1).Width + 200 '★
.Caption = Cap2
Y = .Left + .Width
Else
.Visible = False
End If
End With
End With
Button_Set = Y
End Function
プログラムの書き方に文句は言わないように!
No.1
- 回答日時:
メインのフォーム以外にフォームモジュールを追加して、そのフォームをメッセージボックスそっくりに作って、(ラベルとか、ボタンとかで)、メッセージを表示したい時にそのメッセージフォームを表示させる。
ということなのだと思います。表示したくない時は、Visible = Falseにすればいいのです(^^)。メッセージで押されたボタンの戻り値は、Public変数に設定すればメインのフォームで利用できますしね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件付き書式でフォント色を赤に設定しましたが、 2 2023/07/29 14:17
- その他(インターネット接続・インフラ) Webサイトのフォント・級数変更について 1 2022/10/18 18:08
- Excel(エクセル) [入力規則]のリストボックス内の“不揃いの林檎たち” 3 2022/09/15 18:32
- Word(ワード) ワードでフォントを選ぶとき、一覧からではなく検索等できないでしょうか? 2 2022/10/22 17:52
- 政治 私の発明した「二階建て漢字」は使えるでしょうか? 3 2023/02/08 16:40
- その他(メールソフト・メールサービス) 「Thunderbirdメール」の送信文字のフォントや色の変更 3 2023/03/17 16:43
- Yahoo!メール PCのyahooメールで docomoメール宛に送るとタイトルの後にフォント情報等が表示されてしまう 1 2022/04/15 08:02
- Word(ワード) ワードフォント 一括置換の方法 4 2022/12/31 00:27
- CAD・DTP vectorworks、winとmacでデータを共有する場合 1 2023/02/20 16:41
- Windows 10 リモートデスクトップ フォント 2 2023/08/19 18:07
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
【お題】・忍者がやってるYouTubeが炎上してしまった理由
-
自分独自の健康法はある?
こうしていると調子がいい!みたいな自分独自の健康法、こだわりはありますか?
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
フォントの大きさ
Visual Basic(VBA)
-
メッセージボックスを大きくする方法
Visual Basic(VBA)
-
-
4
Msgboxで使用するフォントの指定は可能?
Visual Basic(VBA)
-
5
MsgBoxについて
Visual Basic(VBA)
-
6
VBSの「MsgBox」について
Visual Basic(VBA)
-
7
ASP VBscript でメッセージボックスの文字の大きさを変えるには?
Visual Basic(VBA)
-
8
UserForm1.Showでエラーになります。
工学
-
9
VBscriptで文字サイズを指定できますか?
Visual Basic(VBA)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
VBA:ユーザーフォームのマルチページに色を付けたい。
Word(ワード)
-
13
サブフォームを非表示させる方法を教えて下さい
その他(Microsoft Office)
-
14
access2021 メッセージボックスを大きくしたい
Access(アクセス)
-
15
メッセージボックスの背景色
Visual Basic(VBA)
-
16
Accessファイルを作成者以外は編集できないように設定するには
Access(アクセス)
-
17
Accessのフォームのみ表示させたい
Access(アクセス)
-
18
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
19
エクセルVBAでオートフィルター最上行を取得するには
Excel(エクセル)
-
20
vbs 文字位置を中央に
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【選手権お題その3】この画像で一言【大喜利】
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・ちょっと先の未来クイズ第6問
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
Microsoft Formsの「個人情報や...
-
ユーザーフォームのテキストボ...
-
クリックイベントなのに、2回ク...
-
Accessで、一つのフォーム画面...
-
モーダルフォームとモードレス...
-
Form_Load と Form_Activate の...
-
ユーザーフォームのラベルに時...
-
パソコンの画面に合わせてユー...
-
ユーザーフォーム
-
フォームに引数を渡す方法のやり方
-
VBAでユーザーフォームを再表示...
-
Access VBA コントロールの参照...
-
【VBAユーザーフォームで閉じる...
-
VBA(エクセル)のユーザー...
-
フォームウィンドウを最前面に...
-
ユーザーフォーム上に現在日時...
-
EXCEL VBA ユーザーフォームの...
-
VB.NETでフォームロード中のエ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ユーザーフォームを表示中にシ...
-
ExcelVBAのユーザーフォームの...
-
VBAでユーザーフォームを再表示...
-
ユーザーフォームのテキストボ...
-
クリックイベントなのに、2回ク...
-
Hideについて(.NET)
-
ACCESSのフォーム、開くんです...
-
コントロールの存在確認
-
Microsoft Formsの「個人情報や...
-
モーダルフォームとモードレス...
-
VBA(エクセル)のユーザー...
-
Form_Load と Form_Activate の...
-
フォームウィンドウを最前面に...
-
エクセルVBAのフォームを最...
-
アクセス2013 フォームが...
-
EXCEL VBA ユーザーフォームの...
-
テキストボックスやラベルのクリア
-
ユーザーフォームのコピー?
-
モードレスでユーザーフォーム...
-
C#でボタンクリックをキャンセル
おすすめ情報