[[20161227003223]] 『折り返し表示の行数を数える』(konMV) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『折り返し表示の行数を数える』(konMV)

似たような質問もありましたが,どれもちょっと違うので質問です。
ひとつの結合したセルの中で,

あああ
いいいいいいいいいい
いいいい
うううううう

というように,セル内改行しつつ,一文が長ければ折り返し表示されるようになっているものがあります。

ここで,セルの高さは変えないで,フォントサイズを調整して,高さが収まるようにしたいのです。

そこで,セル内の行数(印刷時のもの)が分かる数式,またはマクロを教えてください。

< 使用 Excel:Excel2010、使用 OS:Windows10 >


 自信度、30% ぐらいですが。かつ【印刷時のもの】ではなく、実際のセル上に表示されている行数ですが。
 行数取得したいセルを選んで実行してみてください。

 Sub Test()
    Dim stH As Double
    Dim myH As Double

    stH = ActiveSheet.StandardHeight
    myH = Selection.RowHeight

    MsgBox Int(myH / stH)

 End Sub

(β) 2016/12/27(火) 01:41


 もしかしたら実際にセルに文字入力されている行数(隠れた部分も含む)と
 表示されている行数の取得ですか?

 自信度はさらに下がりますが、

 Sub Test2()
    Dim stH As Double
    Dim myH As Double
    Dim act As Double

    stH = ActiveSheet.StandardHeight
    myH = Selection.RowHeight

    Selection.Rows.AutoFit
    act = Selection.RowHeight
    Selection.RowHeight = myH

    MsgBox "セル内行数: " & Int(act / stH) & vbLf & "表示されている行数: " & Int(myH / stH)

 End Sub

(β) 2016/12/27(火) 01:53


さっそくの回答,ありがとうございます。
ほぼ期待通りの結果が出ました。ありがとうございます。

しかし,Test2 ですが,値が入力してあるセルが,いくつものセルが結合してあるものだと上手く動きません。
別のセルに用意すればいいとは思うのですが,直接できれば嬉しいです。

(konMV) 2016/12/27(火) 10:25


 結合セルですか!

 もともと自信度30%未満とコメントしていますが、エクセルは、あくまで表計算ソフトで
 文字というものへの融通性が極めて低いですからねぇ。
 1セルに複数行があった場合の上端の遊びの高さ、下端の遊びの高さ、各行の間の高さ 等々、
 どうなるかということがまったく公開されていませんから、推測で、こうかも、ああかも、と
 皆さん、工夫というか苦労されているところだと思いますので。

 いろいろトライしてみますが、他の回答者さんから、いろいろなアイデアが提示されればうれしいですね。
 konMVさんも、答えを待つだけではなく、試行錯誤して見られることをおすすめします。

(β) 2016/12/27(火) 14:49


βさん,ありがとうございます。
いろいろとやってみていますが,力不足でなんとも…

考え方一つで,あっと驚く方法が見つかるのが,面白いところですよね。

他のみなさんの考えも,是非お聞かせいただければうれしいです!
(konMV) 2016/12/27(火) 18:56


 自信度変わらず、低調。

 結合セル、単一セル ともに使える(と思っているのですが・・・・)

Sub Test3()

    Dim stH As Double
    Dim myH As Double
    Dim my1 As Double
    Dim act As Double
    Dim o As Range

    Set o = Selection(1).MergeArea
    stH = ActiveSheet.StandardHeight
    myH = o.Height
    my1 = o(1).Height
    o.UnMerge
    o.Cells(1).Rows(1).AutoFit
    act = o.Cells(1).Height
    o.Cells(1).RowHeight = my1
    o.Merge

    MsgBox "セル内行数: " & Int(act / stH) & vbLf & "表示されている行数: " & Int(myH / stH)

End Sub

(β) 2016/12/27(火) 23:06


βさん,素晴らしい!こういうアイディアもあるんですね!
マクロはなかなか上手くいかないこともありますが,
βさんのように親切に教えてくださる方がいるのも,嬉しい限りです。
もう少し考えてみますが,結果は満足しています!
ありがとうございました!

(konMV) 2016/12/28(水) 09:39


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.