ダイアログ自体を自作するなら、.NETのShowDialogのようなメソッドを実装すればよいかと。
[ Form2(ダイアログ用フォーム) ]
コントロール:Text1(テキストボックス)、Command1,Command2(ボタン)
Dim DialogResult As VbMsgBoxResult
' フォームをダイアログとして表示。
' 押されたボタンを戻り値で、入力文字列をInputTextへ格納して返します。
Public Function ShowDialog(ByVal Owner As Form, ByRef InputText As String) As VbMsgBoxResult
DialogResult = vbCancel
Me.Show vbModal, Owner
ShowDialog = DialogResult
If DialogResult = vbOK Then InputText = Text1.Text
End Function
' OKボタン
Private Sub Command1_Click()
DialogResult = vbOK
Me.Hide
End Sub
' キャンセルボタン
Private Sub Command2_Click()
Me.Hide
End Sub
[ Form1(メインフォームからの呼び出し例) ]
Private Sub Command1_Click()
Dim frm2 As New Form2
Dim strInput As String
If frm2.ShowDialog(Me, strInput) = vbOK Then
Debug.Print strInput
End If
Unload frm2
End Sub
お礼
素早い回答ありがとうございました。当面、MsgBoxの方はパブリック変数のままにしておきます。N88BASIC世代の、VB初心者ですので、ユーザフォームがどのように呼び出され、戻ってくるよく分からず、ブラックボクスのようで、こんな質問をしました。構造体のことは十分理解できませんが、後段の対処法は私にも出来そうですので、試してみます。