
エクセル2000のVBAで質問します。
A1セルにVLOOKUP関数で文字列が表示されます。
セルの書式設定で「折り返して全体を表示する」にした場合、セル内で折り返されて全部で何行になっているのかを取得する方法はありますか?(VBAでも関数でも)
現在、セルの高さを3行分とっているのですが、関数で表示される文字列の長さによっては3行でおさまらない場合があり、何行になるかがわかれば行数に応じてフォントサイズを変更し、縮小して全体を表示させようと思っています。
当初、セルからはみ出るかどうかがわかれば出来るかと思い、
Sub test01()
With Worksheets("Sheet1").Range("A1")
h = .Height
.Value = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
.WrapText = True
.EntireRow.AutoFit
h2 = .Height
.EntireRow.RowHeight = h
End With
If h2 > h Then
MsgBox "はみ出しちゃった!", , " \(≧▽≦)丿"
End If
End Sub
というマクロを書いてみたのですが、行数がわからないと縮小する割合が求められないので質問いたしました。
No.2ベストアンサー
- 回答日時:
こんにちは。
最初は、"dummy"シートを使って行高を取得してあげれば、と考えて
Sub try()
Dim hs(1 To 10) As Single '10行分
Dim h As Single
Dim h2 As Single
Dim r As Range
Dim i As Long
Dim x
On Error GoTo errHndlr
Set r = Worksheets("Sheet1").Range("A1")
With Sheets("dummy").Range("A1") '■"dummy"シートを用意
With .Font
.Name = r.Font.Name
.Size = r.Font.Size
End With
.ClearContents
.EntireRow.AutoFit
hs(1) = .RowHeight
.WrapText = True
For i = 1 To 9
.Value = String(i, vbLf)
.EntireRow.AutoFit
hs(i + 1) = .RowHeight
Next
.ClearContents
.RowHeight = hs(1)
End With
With r
h = .RowHeight
.Value = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
.WrapText = True
.EntireRow.AutoFit
h2 = .RowHeight
.RowHeight = h
End With
x = Application.Match(h2, hs)
If h2 <> hs(x) Then x = x + 1
errHndlr:
Set r = Nothing
MsgBox CStr(x)
End Sub
...なんてしたり、
Justifyメソッドを使って必要行数を出したりしてみましたけど、
最大行高が決まっているのなら、行数は必要なく、
Sub try2()
Const h As Single = 36
Dim i As Long
With ActiveCell
.WrapText = True
For i = .Font.Size To 2 Step -1
.EntireRow.AutoFit
If .RowHeight <= h Then Exit For
.Font.Size = i - 1
Next
.RowHeight = h
End With
End Sub
これでいいのでは。
Sub try2 最高です \(*^▽^*)/
行高は固定ですから何も計算で縮小率を求めなくともAutoFitした結果が行高以下になるまでFont.Sizeを下げていけばいいわけですね。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Excel(エクセル) エクセルにおいてセル内の文字を出来るだけ大きく表示する方法を教えてください。 4 2022/07/30 08:08
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 4 2023/05/26 10:43
- Excel(エクセル) エクセルの自動更新のタイミングについて 1 2022/07/20 16:12
- Visual Basic(VBA) Excel VBA キーワードから列を取得して、さらに空欄行を非表示にする 3 2022/10/21 22:49
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel VBAで文字列の可視長を得るにはどうしたよいでしょうか?
Visual Basic(VBA)
-
エクセル2007で、マクロで、結合セルに入れた文字列の折り返し回数を取
Excel(エクセル)
-
セルの高さ(行高)を求めるには?
Excel(エクセル)
-
-
4
【エクセル】 結合セルで行の高さを自動調整する方法
Excel(エクセル)
-
5
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
6
エクセルで、結合したセルを選択した状態で行数をカウントしたいのですが、なにか方法はありますか?
Excel(エクセル)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
9
Excel VBAで改行を含めたセルのコピー
Excel(エクセル)
-
10
プロポーショナルフォントの文字列から印刷幅を求める関数
Excel(エクセル)
-
11
配列でデータが入っている要素を求める方法
Visual Basic(VBA)
-
12
VBAで条件によりフォントサイズを自動で変更したい2
Excel(エクセル)
-
13
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
14
VBA テキストボックスの行数取得
Visual Basic(VBA)
-
15
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
16
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
17
添付画像のように、Excel データタブの「リンクの編集」がグレーアウトし操作できません。 「
その他(Microsoft Office)
-
18
excelの列幅高さが勝手に変わる(特定のPCだけ)
Excel(エクセル)
-
19
Excelでセル参照したとき、書式も一緒に持ってくるには?
Windows Vista・XP
-
20
Excel VBA あるセルでENTERを押すと特定のセルへ移動したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで来月以降の日付のセルを...
-
Excelで年月日データから下二桁...
-
エクセルのセルに「=A13」...
-
エクセルで特定のセルを表示の...
-
エクセルでセルに何も入力して...
-
Excelで、セル内改行もそっくり...
-
エクセルのセルが縦方向にのびる
-
Excelの条件付き書式で、計算式...
-
EXCEL:フォントがなぜか透明
-
エクセルで文字の上に重ねがき...
-
ワードの表の中に文字を入れる...
-
エクセル 関数 セルの値が0...
-
エクセルで、文章の右端をそろ...
-
条件付き書式 特定の年だけに適...
-
勤務時間を10進法で合計を出したい
-
エクセル「折り返して全体を表...
-
【Excel】ロックの有無を確認す...
-
concatenate関数で片方のセルの...
-
Excel2007でセルに値があるはず...
-
エクセルで勝手に表示された打...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで年月日データから下二桁...
-
Excelで、セル内改行もそっくり...
-
Excelで来月以降の日付のセルを...
-
エクセルのセルが縦方向にのびる
-
エクセルで特定のセルを表示の...
-
Excelの条件付き書式で、計算式...
-
エクセル 関数 セルの値が0...
-
エクセルでセルに何も入力して...
-
エクセルのセルに「=A13」...
-
ワードの表の中に文字を入れる...
-
エクセルで勝手に表示された打...
-
EXCEL:フォントがなぜか透明
-
セルA1とB1の数値が一致しな...
-
おねがいします>< エクセルで...
-
エクセルで文字の上に重ねがき...
-
横書きで縦の波線の書き方
-
concatenate関数で片方のセルの...
-
EXCELでCELL一杯の文字を書きた...
-
Excel 日付を比較したら、同じ...
-
【Excel】セルの中の文字の下の...
おすすめ情報