
Excel97VBAの質問です。
セルの値が長すぎて表示しきれない場合は、フォントサイズを調整したい。
Sub Macro1()
With Sheet1
.Columns("A").ColumnWidth = 1
.Range("A1").Value = 1
.Range("A2").Value = 12
.Range("A3").Value = 123
.Range("A4").Value = 1234
End With
End Sub
この場合、A2~A4の表示が潰れます。
フォントサイズを例えば、
Sub Macro2()
.Range("A2").Font.Size = 7
.Range("A3").Font.Size = 5
.Range("A4").Font.Size = 3
End Sub
と設定すれば潰れずに値が表示されます。
このようなフォントサイズの最適値を自動的に設定したい。
よろしくご指導お願いします。
No.5
- 回答日時:
セルの値は『数値』としています。
そのため、まず、NumberFormatLocal で数値の書式を指定し、指数表示にならなようにしています。
後は、フォントサイズを操作しています。
オーバーフロー?して『#』を含んだ表示ならフォントサイズを小さくしています。
その時のフォントサイズの減少幅は『1』としています。
AutoFitで列幅をいじったり、ShrinkToFitで見せかけの変更ではフォントを操作できないので、
下のマクロでは『Font.Size』のみを使っています。
質問にあるA1~A4を選択状態にして下のマクロを実行してみました。(Excel2000です)
フォントや数値によって、質問にあるA2、A3、A4の7、5、3は7、5、4になったりもするようです。
質問ではA1のフォントサイズについて触れられていませんが、A2、A3、A4とは違って、逆にフォントを大きくしていく必要はないでしょうか。この点については質問に触れられていないので操作していません。対応は簡単でしょう。
Sub FontFit()
Dim rg As Range 'セル
For Each rg In Selection
With rg
.NumberFormatLocal = "0"
While Left(.Text, 1) = "#" And .Font.Size > 0
.Font.Size = .Font.Size - 1
Wend
End With
Next
End Sub
No.4
- 回答日時:
#2で解答を入れた者です。
#1の2002ponさんのご解答を「.WrapText = True」と誤解しました。ご解答者とご質問者にお詫びいたします。また方法がないとしましたが誤りです。結論は「.ShrinkToFit = True」があるが正解のようです。今後とも勉強します。
ただ半角英字ではフォントサイズが小さくなり過ぎて、使えるのかなと心配しました。
No.2
- 回答日時:
ご質問と逆のColumnWidthを広げるAutoFitはありますが、
FontSizeを拡大縮小するメソッドはないと思います。
文字数を取得して、Case文などで文字数の段階で何段階かのフォントをセットするより他の方法はないのでは。RangeオブジェクトにAutoFormatメソッドがあるが、書式を自動的に設定
するが、自動の意味が違う。#1の方の解答は、2行以上に
おり返すが、Fontの大きさは縮めない。.WrapText = True
に当たります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) excel2021で実行できないマクロ。どこを直したらいいのか 2 2022/03/28 03:40
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/03/28 14:52
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/02/02 09:25
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
コンボボックスの一部のアイテ...
-
VB.NET2005 TextBox 高さ(Heig...
-
VBAのフォント変更(エクセルか...
-
文字色 エクリプス
-
プロポーショナルフォントの文...
-
VBにて指定した通りにExcelの列...
-
Macbook Word フォント色変更で...
-
エディットボックスのフォント...
-
JakaraPOI セル内部のフォント...
-
ドロップダウンリストのフォン...
-
リストボックスのフォントをサ...
-
static 文字が上に張り付いて・...
-
Win32 APIで、テキストボックス...
-
グラフの交点の求め方(Excel)
-
エクセルで作った新しいウイン...
-
「アイテムは収集されました」...
-
コントロールの書式設定で、“コ...
-
ラジオボタンの初期指定
-
コモンダイアログコントロール...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
コンボボックス内の文字サイズ変更
-
VB.NET2005 TextBox 高さ(Heig...
-
VBAのフォント変更(エクセルか...
-
フォントの大きさ
-
ドロップダウンリストのフォン...
-
プロポーショナルフォントの文...
-
エディットボックスのフォント...
-
VBA TEXTBOXテキストボックスの...
-
文字色 エクリプス
-
JTableのヘッダー文字のサイズ変更
-
リソースエディタでスタティッ...
-
コンボボックスの一部のアイテ...
-
VBにて指定した通りにExcelの列...
-
Msgboxで使用するフォントの指...
-
リストコンロールの一行だけを...
-
Macbook Word フォント色変更で...
-
EDITBOXに関して
-
static 文字が上に張り付いて・...
-
カレンダーコントロールとサイ...
-
GetTextExtentPoint32での高さ
おすすめ情報