ワークシート上の数値をメッセージボックスで表示させるため、下記のようなVBAを書きました。
Sub 金額表示()
Dim a As Long, b As Long, c As Long
a = Sheets("logic").Range("P39").Value
b = Sheets("logic").Range("O46").Value
d = Sheets("logic").Range("O44").Value
MsgBox "合計の金額は、" & Format(d, "##,###万円") _
+ Chr(&HD) + Chr(&HA) + "○○は、" & Format(a, "##,###万円") _
+ Chr(&HD) + Chr(&HA) + "○○○○は、" & Format(b, "##,###万円"), vbInformation, "確認"
End Sub
○○部分の文字数や、金額の桁数により、表示される数字の位置ははかなりずれがあります。
これを円で後ろでそろえ統一するような方法はないでしょうか?
出来れば後ろでそろえても○○の部分も頭をそろえておきたいですが、それが無理なら後揃えだけでも結構です。
よろしくお願いします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
> ならば、セル内での右寄せ同様に後ろだけ揃えることは不可能でしょうか?
今までのことは、全て後ろを揃えることについて言っているのです。
MsgBox関数の第一引数であるpromptについての右揃え等の表示位置の機能は
無いのです。全て左から順に表示です。TABが使えるぐらいです。
従って、後ろを揃えるには、等幅フォントを用いて全体の字数合わせるより
方法は無いのです。 「MS ゴジック」だと全角は半角の2倍幅になります。
何故、MsgBox関数に固執するのですか?
後ろをキチット揃えたい気持ちは解りますが・・・
前に言ったようにユーザーフォームを使えば、自由自在になると思いますが、
何故ダメなのですか?
何が何でも、ゼッ~~~ッタイ MsgBoxを使って目的を達成しようとするので
あれば、Win32APIを勉強されたら良いかと思います。
MsgBox関数を実行する前に、当方が最初に書いたようにシステム(OS)における
「メッセージボックス」の「フォント」の種類を取得した後に、「MS ゴジック」
等の「等幅フォント」に変更し、MsgBox を使用後に元のフォント種に戻す
ということをAPIを使ってVBAで実行することだと思います。
しかし、当方の持っている安物のAPIの参考書には、該当する関数は、記載されて
おりません。 出来るかどうかも解りません。 いずれにしても可也難しいです。
繰り返しますが、すんなり諦めてユーザーフォームをお使いになることを
お勧めします。
この回答への補足
何故、MsgBox関数に固執するのか。
理由1.ユーザーの中に未だoffice95を使用している人間が少数ですが存在するのです。したがってユーザーフォームは使えません。
理由2.
私自身がoffice95でマクロを学んだためコントロールツールボックス系はよくわかっていないのです。
どうしても無理であればユーザーフォームではないですがDialogSheetを挿入して作って見ようかと考えています。
いろいろ勝手を申しすみませんでした。
ありがとうございました。
No.5
- 回答日時:
前にも言ったように「文字幅等間隔フォント」でないと無理ですよ。
Web上、連続スペースは、削られてしますますので代わりに、I と H が10個ずつ
ですが、下記を実行してみてください。
数字10個とカンマ10個でもいいですよ。
これでもう カンマの数が違うとそれだけでも、もう右端は揃わないことが
お解りでしょう。
桁数が違う金額に、桁数が同じになる分だけ数字の左側にスペースを補って
テストしてみてください。
Sub test()
MsgBox "IIIIIIIIII" & vbLf & "HHHHHHHHHH"
End Sub
何度もありがとうございます。
なるほど理屈は良くわかりました。
ならば、セル内での右寄せ同様に後ろだけ揃えることは不可能でしょうか?「文字幅等間隔フォント」の設定も自分のPCだけでの設定では無意味なのです。
No.4
- 回答日時:
#2です。
半角の数字にしたいなら
(1)a = "0123456789" を半角のテーブルに
a="0123456789"に変える
(2)台紙的な
k = " " '10桁に設定
を半角のスペースに変える。下記では」Space関数を使用した。
Mid(k, p, 1) = "," をMid(k, p, 1) = ","
と半角に変える。
だけで
他はそのままで動くと思います。やって見てください。
幸いMid関数は、全角ばかりの時は全角で数えた文字数を、半角ばかりの文字列の場合は半角の文字数を返すようですから。
数を10桁まで対応するため
If p = 7 Or p = 3 Then
の7と3のところを修正しました。
Function edt(n)
a = "0123456789"
k = Space(15) '12桁+カンマ3桁に設定
s = n
p = Len(k)
For i = Val(Len(s)) To 1 Step -1
If p = Len(k) - 3 Or p = Len(k) - 7 Or p = Len(k) - 11 Then
Mid(k, p, 1) = ","
p = p - 1
End If
q = (s Mod 10) + 1
'MsgBox Mid(a, q, 1)
Mid(k, p, 1) = Mid(a, q, 1)
p = p - 1
s = Int(s / 10)
Next i
edt = k
' MsgBox k
End Function
'------
Sub test01()
MsgBox "*" & edt(123456788) '頭部スペースを見るため*を添えた
End Sub
この回答への補足
ありがとうございました。
下記のようにやりましたが、数字がすべて同じ桁数ならきちんと後ろもそろうのですが、桁違いだとずれが発生しました。どこが悪いのでしょうか?
Function edt(n)
a = "0123456789"
k = Space(15) '12桁+カンマ3桁に設定
s = n
p = Len(k)
For i = Val(Len(s)) To 1 Step -1
If p = Len(k) - 3 Or p = Len(k) - 7 Or p = Len(k) - 11 Then
Mid(k, p, 1) = ","
p = p - 1
End If
q = (s Mod 10) + 1
'MsgBox Mid(a, q, 1)
Mid(k, p, 1) = Mid(a, q, 1)
p = p - 1
s = Int(s / 10)
Next i
edt = k
' MsgBox k
End Function
Sub test02()
Dim a As Long, b As Long, c As Long
a = Sheet1.Range("A1").Value
b = Sheet1.Range("A2").Value
d = Sheet1.Range("A3").Value
MsgBox "○○○○○は" & edt(a) & "円" _
+ Chr(&HD) + Chr(&HA) + "○○○○○は" & edt(b) & "円" _
+ Chr(&HD) + Chr(&HA) + "○○○○○は" & edt(d) & "円", vbInformation, "確認"
End Sub
No.3
- 回答日時:
後ろを揃えるということは、前後を揃えることになると思いますよ。
フォント種類を等間隔文字(全角が半角の2倍で、スペースも文字と同幅)にしないと
キチ~ット揃えることは、出来ないと思います。
プロポーショナル等フォントはスペースと文字で字幅がそれぞれ違いますので、
右端を揃えるのは出来ないでしょう。
このようなときは、ユーザーフォームを使いましょう。
色も使えるし、配置も自由自在です。
No.2
- 回答日時:
(1)コメントの部分をまず揃えましょう
"合計の金額は、" 7字だから
"○○は、" も"○○は、 " と7字に
"○○○○は、" も"○○○○は、 "と7字にする。
(2)数字を10桁に右揃えにそろえる。
右詰め、3桁ごとカンマ付きの全角文字列にします。
下記コードを参考に。
Function edt(n)
a = "0123456789"
k = " " '10桁に設定
s = n
p = Len(k)
For i = Val(Len(s)) To 1 Step -1
If p = 7 Or p = 3 Then
Mid(k, p, 1) = ","
p = p - 1
End If
q = (s Mod 10) + 1
'MsgBox Mid(a, q, 1)
Mid(k, p, 1) = Mid(a, q, 1)
p = p - 1
s = Int(s / 10)
Next i
edt = k
' MsgBox k
End Function
'------
Sub test01()
MsgBox "*" & edt(12345)
End Sub
(1)と(2)の両者を、Msgboxの文字列の中で組み合わせてください。
夜遅いので省略で失礼。
No.1
- 回答日時:
コントロールパネルの中の「画面」を開き、「デザイン」タブで、「指定する部分」を
「メッセージボックス」にして、「フォント」を「MS ゴジック」にし、[適用]、[OK]
します。
これで、下記コードを実行すると前後が、キチット揃うと思います。
中間の間隔は、27の値で調整します。
これで如何でしょうか。
Sub 金額表示()
Dim a As Long, b As Long, c As Long
Dim x As Integer, y As Integer, z As Integer
Const xm = "合計の金額は、" ' <--- 全部全角
Const ym = "○○は、" ' <--- 〃
Const zm = "○○○○は、" ' <--- 〃
a = Sheets("logic").Range("P39").Value
b = Sheets("logic").Range("O46").Value
c = Sheets("logic").Range("O44").Value
x = 27 - LenB(xm) - LenB(StrConv(Format(c, "##,###万円"), vbFromUnicode))
y = 27 - LenB(ym) - LenB(StrConv(Format(a, "##,###万円"), vbFromUnicode))
z = 27 - LenB(zm) - LenB(StrConv(Format(b, "##,###万円"), vbFromUnicode))
MsgBox xm & String(x, " ") & Format(c, "##,###万円") & vbLf & _
ym & String(y, " ") & Format(a, "##,###万円") & vbLf & _
zm & String(z, " ") & Format(b, "##,###万円"), vbInformation, "確認"
End Sub
この回答への補足
ありがとうございました。
これで自分のPCではちゃんと揃いましたが、他人のPCではダメですよね?
他人のPCのせっていによらず、そろえたいのです。
頭と後ろの両方をそろえられなくとも後ろだけでもかまいません。よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
好きなおでんの具材ドラフト会議しましょう
肌寒くなってきて、温かい食べ物がおいしい季節になってきましたね。 みなさんはおでんの具材でひとつ選ぶなら何にしますか? 1番好きなおでんの具材を教えてください。
-
これ何て呼びますか
あなたのお住いの地域で、これ、何て呼びますか?
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
「お昼の放送」の思い出
小学校から中学校、ところによっては高校まで お昼休みに校内放送で、放送委員が音楽とかおしゃべりとか流してましたよね。 最近は自分でもラジオができるようになって、そのクオリティもすごいことになっていると聞きます。
-
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
vbs 文字位置を中央に
Visual Basic(VBA)
-
フォントの大きさ
Visual Basic(VBA)
-
-
4
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
5
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
6
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
7
VBAでファイルを開くときにファイル名でワイルドカードを使用したいです
その他(プログラミング・Web制作)
-
8
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
vbaでmsgboxの位置を指定
PowerPoint(パワーポイント)
-
11
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
12
メッセージボックスで1025文字以上を扱う
Visual Basic(VBA)
-
13
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
14
【VBA】計算結果に小数点第2位までを表示させる方法
Visual Basic(VBA)
-
15
VBA 1次元配列を2次元に追加する
Visual Basic(VBA)
-
16
Application.Runエラー(1004)
Excel(エクセル)
-
17
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
18
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
19
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
20
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
半角の『°(単位の度)』
-
半角の×(かける)は?
-
テプラは半角数字が使えますか?
-
半角スペース
-
EXCELの文字列操作で文字数不足...
-
EXCELで、セル内の半角カ...
-
契約書や 公文書・私文書などに...
-
エクセル関数で文字列の中のス...
-
問2 次の文中の空欄にあてはま...
-
Excel 文字列の中から数字だけ...
-
℃の半角表示
-
エクセルでひらがな・漢字はそ...
-
メールアドレスの上ハイフン入...
-
Excel2016 検索の窓を常時表示...
-
エクセルで、JIS関数、ASC関数...
-
ギリシャ文字 μの出し方
-
秀丸エディタで、スペースを消...
-
半角、全角のルール
-
1, (1),(1)の使い分け
-
InputBoxの入力値を半角数字の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角の『°(単位の度)』
-
契約書や 公文書・私文書などに...
-
半角の×(かける)は?
-
℃の半角表示
-
EXCELの文字列操作で文字数不足...
-
テプラは半角数字が使えますか?
-
メールアドレスの上ハイフン入...
-
EXCELで、セル内の半角カ...
-
エクセル関数で文字列の中のス...
-
半角スペース
-
Excel2016 検索の窓を常時表示...
-
エクセルで、JIS関数、ASC関数...
-
問2 次の文中の空欄にあてはま...
-
半角英数で♭の入力
-
EXCEL95 VLOOKUP関数で半角と全角
-
お名前(姓)」には「カタカナ(...
-
エクセルでひらがな・漢字はそ...
-
【VBA】ファイルパスに半角スペ...
-
ビジネスの文書における、数字...
-
隅付き括弧に半角はありますか...
おすすめ情報