質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

4491閲覧

Excel フォーム テキストボックスの文字サイズが一定にならない

D0NKAMA

総合スコア28

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/12/27 02:52

編集2021/12/27 06:41

前提・実現したいこと

テキストボックスの文字サイズを一定に表示したい

発生している問題・エラーメッセージ

イメージ説明
テキストボックスに文字を入力すると3番目だけテキストボックスが小さくなってしまう。

試したこと

原因箇所は特定できていて、ディスプレイの解像度やサイズに対応してフォームのサイズを自動で調整する処理が原因になっています。
この処理をコメントにすると一定で表示されますが、どうしてもサイズ調整の処理は消すことはできません。
3番目のテキストボックスの「Height」を1上げれば一定のサイズにはなりますが少し高さが違うのが気になります。

フォームのサイズ調整をしてもテキストボックスの文字サイズを一定に表示する処理の書き方をご教授いただけませんか?

該当のソースコード

VBA

1'UserForm 2Private Sub UserForm_Initialize() 3 Dim originSize 4 ' 今の画面サイズを記憶 5 originSize = Application.WindowState 6 ' 画面拡大 7 Application.WindowState = xlMaximized 8 9 ' フォームサイズ設定 10 Me.Zoom = SizeChange(Me.Zoom) 11 Me.Width = SizeChange(Me.Width) 12 Me.Height = SizeChange(Me.Height) 13 14 ' 画面縮小 15 If originSize = xlNormal Then Application.WindowState = xlNormal 16End Sub

VBA

1'InputAssistModule 2' ディスプレイ解像度によってフォームのサイズを変更処理 3Function SizeChange(value As Double) As Double 4 SizeChange = value * ((Application.Height * FORMSIZE_RATIO) / UserForm.Height) 5End Function

VBA

1'ConstModule 2Public Const FORMSIZE_RATIO As Double = 0.7 ' フォームのサイズ割合

それぞれ別のモジュールに記載しています。

補足情報(FW/ツールのバージョンなど)

Excel 2019
Windows 10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2021/12/27 03:22

それぞれのテキストボックスのフォント設定は同じですか。
D0NKAMA

2021/12/27 04:14

はい、同じです。 一つのテキストボックスを3つに複製しても、一つ目と三つ目の場所を入れ替えても一番下のものだけ文字サイズが小さくなります。
hatena19

2021/12/27 06:14

提示のコードだと構文エラーで実行できないのですが。 Sub内ではPublic宣言できないので。 Publicを削除すると、今度は、Formが変数宣言されていないとエラーになります。 実際のコードを提示してもらえないと、外部の人間には原因の特定は難しいです。
D0NKAMA

2021/12/27 06:41

伝わりやすくするためにプログラムを省略していました。申し訳ありません。「該当のソースコード」を編集しました。
hatena19

2021/12/27 06:56

InputAssistModule というのは標準モジュールでしょうか。 UserFormのことろで変数が定義されていないというエラーになり実行できません。
D0NKAMA

2021/12/27 07:07

InputAssistModuleとConstModuleは標準モジュールです。 UserFormはフォーム名なので、フォーム名を「UserForm」にしていただければ実行できると思います。m(_ _)m
hatena19

2021/12/27 07:17 編集

画像のようなユーザーフォームを作成して、フォーム名「UserForm」で実行してみましたが、症状を再現できませんでした。 テキストボックスのフォント設定(フォント名、フォントサイズなど)を提示してもらえますか。あと、テキストボックスの高さ、幅も。
D0NKAMA

2021/12/27 07:21

私も「Me.Zoom = Me.Zoom * 2」を実行してみた所、症状は出ませんでした。 InputAssistModuleでの処理が原因かもしれません。
D0NKAMA

2021/12/27 07:34

なぜかわかりませんが、「FORMSIZE_RATIO = 0.7」を「FORMSIZE_RATIO = 0.8」にすると一定の文字サイズで表示されました! Excel側のバグなのでしょうか?
hatena19

2021/12/27 07:54

FORMSIZE_RATIO = 0.7 に戻して、 ユーザーフォームにコマンドボタンを配置して、下記のコードを記述して、ユーザーフォームを表示させてコマンドボタンをクリックして、イミディエイトウィンドウに出力された結果をコピペしてもらえますか。 Private Sub CommandButton1_Click() Debug.Print Me.Zoom Debug.Print Me.TextBox3.FontName Debug.Print Me.TextBox1.FontSize Debug.Print Me.TextBox2.FontSize Debug.Print Me.TextBox3.FontSize End Sub こちらでそれと同じ設定をして症状を再現出来たら、Excel側のバグの可能性が高いですね。
D0NKAMA

2021/12/27 08:05

87 MS UI Gothic 11.25 11.25 11.25 上記が出力された結果です。
hatena19

2021/12/27 09:30

ZOOMの値をいろいろ変更して試してみたら、設定値によっては文字サイズが異なって見える場合がありますね。 Excel側のバグの可能性がありそうですね。
D0NKAMA

2021/12/27 09:38

やはり文字サイズが異なっているんですね! いろいろと試していただいてありがとうございました。そして拙い情報でお時間をかけさせてしまい申し訳ありませんでした。m(_ _;)m今回はバグの可能性があるということで自己解決にさせていただきます。
guest

回答1

0

自己解決

なぜかわかりませんが、FORMSIZE_RATIO = 0.7FORMSIZE_RATIO = 0.8に変更すると一定の文字サイズで表示されるようになりました。
hatena19さんの環境でも同じ症状を確認できたと言うことなので、おそらくExcel側のバグの可能性があります。

投稿2021/12/28 00:06

D0NKAMA

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問