Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


60325 / 76738 ←次へ | 前へ→

【21053】Re:msgbox を任意の位置に表示する
発言  ichinose  - 05/1/8(土) 19:10 -

引用なし
パスワード
   皆さん、こんばんは。

ユーザーフォームでMsgboxを行う簡単なサンプルです。
といっても簡単な「OK」ボタンのみの場合ですが・・・。
前準備として
コントロールを一つも配置しないユーザーフォーム(Userform1)を
作成しておいて下さい。

標準モジュールに
'=====================================================
Sub test()
   mymsgbox "MSGBOXも汎用的に作るのは、そんなに楽" & _
    "ではないですねえ!!。 これはサンプルなので「OK」ボタンのみの" & _
    "場合ですが、ボタンの数をIDによって分ける場合は更に複雑になりそうです。"
   mymsgbox "MSGBOXも汎用的に作るのは、そんなに楽" & vbLf & _
    "ではないですねえ!!。 これはサンプルなので「OK」ボタンのみの" & vbLf & _
    "場合ですが、ボタンの数をIDによって分ける場合は更に複雑になりそうです。", 100, 100
End Sub
'========================================================================
Function mymsgbox(mes As String, Optional myleft = 0, Optional mytop = 0) As Long
'input :mes ---表示文字列 myleft 水平位置 mytop 垂直位置
'output :mymsgbox 押されたボタン(今のところ、0(OKボタンが押された)を返す
  Dim lbl As MSForms.Label
  Dim btn As MSForms.CommandButton
  Load UserForm1
  With UserForm1
   .StartUpPosition = 0
   .top = mytop
   .left = myleft
   Set lbl = .Controls.Add("Forms.Label.1")
   With lbl
    .top = 10
    .left = 10
    .Caption = mes
    .Width = Len(mes) * 11
    .AutoSize = True
    End With
   Set btn = .Controls.Add("Forms.CommandButton.1")
   With btn
    .Caption = "OK"
    .top = lbl.top + lbl.Height + 10
    .AutoSize = True
    End With
   .Width = lbl.left + lbl.Width + 10
   .Height = btn.top + btn.Height + 30
   btn.left = .Width / 2 - btn.Width / 2
   Set .btn = btn
   .Show
   mymsgbox = .btn_id
   Unload UserForm1
   End With
End Function


準備したuserform1のモジュールには、

'==================================================
Public btn_id As Long
Public WithEvents btn As MSForms.CommandButton
'==================================================
Private Sub btn_Click()
  btn_id = 0
  Me.Hide
End Sub


以上です。testを実行してみて下さい。
「はい」ボタンや「いいえ」ボタン等のMsgboxのバリエーションとなると
もうちょっと追加しなくてはなりませんが・・・。

確認してみて下さい

0 hits

【21035】msgbox を任意の位置に表示する QP 05/1/8(土) 14:20 質問
【21036】Re:msgbox を任意の位置に表示する 鳴島亮 05/1/8(土) 14:33 発言
【21037】Re:msgbox を任意の位置に表示する QP 05/1/8(土) 14:43 質問
【21038】Re:msgbox を任意の位置に表示する QP 05/1/8(土) 14:58 発言
【21041】Re:msgbox を任意の位置に表示する IROC 05/1/8(土) 16:23 回答
【21042】Re:msgbox を任意の位置に表示する KIRI 05/1/8(土) 16:56 回答
【21053】Re:msgbox を任意の位置に表示する ichinose 05/1/8(土) 19:10 発言
【21057】Re:msgbox を任意の位置に表示する QP 05/1/9(日) 10:57 お礼
【21070】Re:msgbox を任意の位置に表示する ichinose 05/1/9(日) 19:25 発言
【21072】Re:msgbox を任意の位置に表示する QP 05/1/10(月) 8:11 お礼

60325 / 76738 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free