エクセル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も見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
Excel VBAで文字列の可視長を得るにはどうしたよいでしょうか?
Visual Basic(VBA)
-
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
セルの高さ(行高)を求めるには?
Excel(エクセル)
-
-
4
Excel マクロ VBA プロシージャが大きすぎます のエラー対処方法
Visual Basic(VBA)
-
5
エクセルで折り返しと縮小の同時設定は無理?
Excel(エクセル)
-
6
エクセルのセル内の余白の設定って出来るのでしょうか?
Excel(エクセル)
-
7
Excel VBAでのWorksheet_Changeが動作しない原因
Excel(エクセル)
-
8
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
9
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
10
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
11
Excel VBAからAccessマクロを実行したい
Visual Basic(VBA)
-
12
アクセスVBAのMe!と[ ]
Access(アクセス)
-
13
ExcelVBAでのプロジェクトのロックの解除の方法
Excel(エクセル)
-
14
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
15
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
16
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
17
別ブックをダイアログボックスで指定してそこにあるシートをコピーしたい
Excel(エクセル)
-
18
VBAのFind関数で結合セルを検索するとヒットしない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで年月日データから下二桁...
-
エクセルのセルに「=A13」...
-
Excelで、セル内改行もそっくり...
-
エクセルのセルが縦方向にのびる
-
Excelで来月以降の日付のセルを...
-
エクセル 関数 セルの値が0...
-
【Excel】セルの中の文字の下の...
-
ワードの表の中に文字を入れる...
-
横書きで縦の波線の書き方
-
エクセルで文字の上に重ねがき...
-
エクセルで特定のセルを表示の...
-
Excelで前ゼロを取る方法
-
セルA1とB1の数値が一致しな...
-
Excel2007での英語の月名を数字...
-
エクセルでセルに何も入力して...
-
Excelの条件付き書式で、計算式...
-
excelで右隣のセルが空だと、文...
-
エクセルのセル内の文字を中央...
-
勤務時間を10進法で合計を出したい
-
エクセルで左寄せ かつ 空間...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで年月日データから下二桁...
-
エクセルのセルに「=A13」...
-
Excelで、セル内改行もそっくり...
-
ワードの表の中に文字を入れる...
-
エクセルのセルが縦方向にのびる
-
エクセルで特定のセルを表示の...
-
エクセル 関数 セルの値が0...
-
Excelで来月以降の日付のセルを...
-
エクセルで文字の上に重ねがき...
-
Excelで土、日、祝日の色分けが...
-
横書きで縦の波線の書き方
-
Excelの空のセル
-
Excel2007でセルに値があるはず...
-
【Excel】セルの中の文字の下の...
-
Excelの条件付き書式で、計算式...
-
エクセルでセルに何も入力して...
-
セルA1とB1の数値が一致しな...
-
エクセルで住所のフリガナ変換
-
エクセルで、文章の右端をそろ...
-
EXCELでCELL一杯の文字を書きた...
おすすめ情報