dポイントプレゼントキャンペーン実施中!

エクセル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に詳しい方、ご教授願えませんでしょうか。

A 回答 (3件)

MSGBOXには「右寄せ」の指定はありませんし、そもそも表示フォントも


システムフォント指定でプロポーショナルフォントですから、ブランク
を入れて文字位置を合わせるなんてことも出来ません。

(まあ、全角文字を指定してRIGHT/LEFT関数を駆使すれば、それっぽく
なることはなりますが・・・)

ということで、表示位置をしっかり合わせたいなら、表示専用にフォーム
を作って、テキストボックスのプロパティを使うしかないと思います。
    • good
    • 0

こんにちは。



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
    • good
    • 0

>値を右端を揃えて表示したいのですが、



頭に0を付けても良いならFORMAT関数で可能です。
それ以外なら結構面倒かも・・・・。

MsgBox("項目1 = " & 項目1.Value & vbLf & "項目2 = " & 項目2 & vbLf &
"以上の内容で登録してよろしいですか?", 36 + 256, "確認,")
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!