• ベストアンサー

エクセルVBAのMsgBox関数について

エクセルVBAのMsgBox関数で項目1と項目2の値を表示して 問題なければデータベースに登録するといったコードを作りたいです。 今のところ以下のような感じです。 MsgBox("項目1" & 項目1.Value & vbCrLf & "項目2" & 項目2 & vbCrLf & "以上の内容で登録してよろしいですか?", 36 + 256, "確認,") これでは 項目1XXXX (XXXX 項目1の値) 項目2XXXX (XXXX 項目2の値) 以上の内容で登録してよろしいですか? のように表示され、項目1と項目1の値の間にスペースがないため 見栄えが悪いです。そこでスペースを表示して、尚且つ項目1の値と 項目2の値を右端を揃えて表示したいのですが、文字数が不定なので スペースを決まった数入力すれば解決するということではありません。 誰かVBAに詳しい方、ご教授願えませんでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • FEX2053
  • ベストアンサー率37% (7995/21381)
回答No.1

MSGBOXには「右寄せ」の指定はありませんし、そもそも表示フォントも システムフォント指定でプロポーショナルフォントですから、ブランク を入れて文字位置を合わせるなんてことも出来ません。 (まあ、全角文字を指定してRIGHT/LEFT関数を駆使すれば、それっぽく なることはなりますが・・・) ということで、表示位置をしっかり合わせたいなら、表示専用にフォーム を作って、テキストボックスのプロパティを使うしかないと思います。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 VB系のプログラミングで、右揃えというのは数字だけだと思います。質問内容が、読み分からないです。 通常、MsgBox は、左揃えです。スペースも半角・全角入ります。 Test2 は、数字を想定して右揃えになっています。 なお、この部分は気をつけてください。最大桁を入れてください。 Dim a As String * 10 '最大桁数 10 フォントは、ツール--オプションで設定しますが、通常、MS ゴシックで、プロポーショナルにはしていないという条件です。 '左揃え Sub Test1() Dim ret As VbMsgBoxResult Dim 項目1 As Variant Dim 項目2 As Variant Set 項目1 = Cells(1, 1) Set 項目2 = Cells(2, 1) ret = MsgBox("項目1: " & 項目1.Value & vbCrLf & _        "項目2: " & 項目2 & vbCrLf & _ "以上の内容で登録してよろしいですか?", vbQuestion + vbYesNo, "確認,") If ret = vbNo Then Exit Sub End Sub '右揃え Sub Test2() Dim ret As VbMsgBoxResult Dim 項目1 As Range Dim 項目2 As Range Dim a As String * 10 '最大桁数 10 Dim b As String * 10 Set 項目1 = Cells(1, 1) Set 項目2 = Cells(2, 1) RSet a = Format(項目1.Value, "#,##0") RSet b = Format(項目2.Value, "#,##0") ret = MsgBox("項目1:" & a & vbCrLf & _        "項目2:" & b & vbCrLf & _ "以上の内容で登録してよろしいですか?", vbQuestion + vbYesNo, "確認,") If ret = vbNo Then Exit Sub End Sub

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

>値を右端を揃えて表示したいのですが、 頭に0を付けても良いならFORMAT関数で可能です。 それ以外なら結構面倒かも・・・・。 MsgBox("項目1 = " & 項目1.Value & vbLf & "項目2 = " & 項目2 & vbLf & "以上の内容で登録してよろしいですか?", 36 + 256, "確認,")

関連するQ&A