【VBA】メッセージボックスのフォントの大きさを変更する方法
【VBA】メッセージボックスのフォントの大きさを変更する方法

【VBA】メッセージボックスのフォントの大きさを変更する方法

【VBA】メッセージボックスのフォントの大きさを変更する方法 2024 10/23 広告 Excel 2024年8月13日2024年10月23日

こんにちは!大阪市を拠点に活動している『縁紡ぐ』の稲垣です。

SWELLを使ったホームページ制作や、Excel、ACCESS、RPAなどのシステム開発を行っています。また、Excel、Word、Outlookの研修や、情報セキュリティ研修も行っています。身近なITの相談相手になりたいと思っています。

お気軽にお問い合わせください。

目次

メッセージボックスのフォントは変更することはできない

メッセージボックスの文字が小さくて見にくいから大きくしたいなぁ

稲垣

メッセージボックスは、フォントに関する変更はできないんだ。

メッセージボックスとは、MsgBoxで表示することができるフォームのことです。

MsgBox "フォントの変更はできない"

メッセージボックスはフォントの設定変更はできません

どうすることもできないのかぁ

稲垣

自作のメッセージボックスを作れば変更可能になるよ!

って、ことで自作しちゃいましょう!(想定よりラベルの大きさ調整が大変でした💦)

自動サイズ調整を行うカスタムメッセージボックス

文字数に応じてメッセージボックスの大きさを変更しないと文字切れしてしまうので、対応する必要があります。それを踏まえて作成していきましょう!

本格的にカスタムしたメッセージボックス、OK、Yes/No、Yes/No/Cancelを選択できる作成方法は、下記の記事を参考してください。

縁紡ぐ 【VBA】VbMsgBox/MsgBoxをカスタムして文字を大きくする | 縁紡ぐ メッセージボックスは、フォントの変更ができないので自作する メッセージボックスは、VbMsgBoxやMsgBoxやで表示することができるフォームのことです。OKボタンのみ表示で… メッセージボックス用のフォームを作成 追加したユーザーフォームにラベル(Label1)とボタン(CommandButton1)を追加 フォームにコードを追加 Private Sub CommandButton1_Click() ' ユーザーフォームを閉じる Unload Me End Sub Public Sub ShowCustomMessageBox(ByVal message As String, Optional ByVal title As String = "メッセージ") Dim maxWidth As Double Dim labelPadding As Double Dim buttonHeight As Double Dim formPadding As Double Dim textWidthValue As Double Dim textHeightValue As Double ' 初期設定 maxWidth = 400 ' ラベルの最大幅 labelPadding = 10 ' ラベルの周囲に余白を追加 formPadding = 30 ' フォームのパディング(上下左右) buttonHeight = Me.CommandButton1.Height ' フォントに基づいてテキストの幅と高さを計算 With Me.Label1 textWidthValue = GetTextWidth(message, .font) textHeightValue = GetTextHeight(message, .font, IIf(textWidthValue + labelPadding * 2 > maxWidth, maxWidth, textWidthValue + labelPadding * 2)) .Caption = message .WordWrap = True .AutoSize = False .width = IIf(textWidthValue + labelPadding * 2 > maxWidth, maxWidth, textWidthValue + labelPadding * 2) .Height = textHeightValue + labelPadding End With ' フォームのサイズを調整(フォームのパディングを考慮) Me.width = Me.Label1.width + formPadding * 2 Me.Height = Me.Label1.Top + Me.Label1.Height + buttonHeight + formPadding * 2 ' OKボタンの位置を調整 Me.CommandButton1.Top = Me.Label1.Top + Me.Label1.Height + 10 Me.CommandButton1.Left = (Me.width - Me.CommandButton1.width) / 2 - formPadding / 2 ' フォームのタイトルを設定 Me.Caption = title ' フォームを表示 Me.show End Sub ' テキストの幅を計算する関数 Private Function GetTextWidth(ByVal text As String, ByVal font As Object) As Double ' Label1を利用してテキスト幅を計算 Me.Label1.Caption = text Me.Label1.AutoSize = True GetTextWidth = Me.Label1.width End Function ' テキストの高さを計算する関数 Private Function GetTextHeight(ByVal text As String, ByVal font As Object, ByVal width As Double) As Double ' Label1を利用してテキスト高さを計算 Me.Label1.Caption = text Me.Label1.WordWrap = True Me.Label1.width = width Me.Label1.AutoSize = True GetTextHeight = Me.Label1.Height End Function 使用方法

使用方法は、フォーム名+メソッド名+引数(メッセージ内容の文字列, タイトルに表示する文字列)で、作成したメッセージボックス用のフォームを使うことができます。

UserFormMessage.ShowCustomMessageBox "非常に長いメッセージが表示される場合、ラベルとフォームのサイズが自動的に調整されます。", "テストメッセージタイトル"

大きくなって見やすい!自動調整してくれるなんてすごい!

稲垣

見やすくなったことで、ストレス軽減になるね!

見比べると文字の大きさが変わり、読みやすくなり、ボタンも大きくて押しやすくなったと思います。

まとめ

今回は、メッセージボックスを自作する方法をご紹介しました。なぜ、このようなメッセージボックスを作成したかというと、「標準のメッセージボックスだと文字が小さく見にくい」という、意見があったからです。

使い人の状況を考慮して、ユーザーインターフェースは改良する必要がありますよね。コストとパフォーマンスを天秤にかける必要はありますが。

ぜひ、この記事を活用して開発工数を減らしながらユーザーインターフェースの向上をしてくださいね!

記事を書いた人

稲垣

  • Excel、ACCESSでのシステム開発が得意
  • ITスキルを共有し実践的に学びながら成長する人を見るのが幸せ
  • 自家焙煎するほどのコーヒー好き
  • 使用言語 VBA、Python、Javascript、Java、HTML、CSS etc.
  • 保有資格 Kintoneアソシエイト、日商簿記検定2級、マンション管理士、管理業務主任者、情報セキュリティマネジメント、ExcelVBA etc.
  • 業務フロー図の作成や業務時間分析を通して、効率化ポイントを探る人
  • お客様にとって本当に良いことかを第一に考える人
Excel よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
📎📎📎📎📎📎📎📎📎📎