コメントのポップアップをExcelセルでの自動サイズにする方法を見つけようとしています。 AutoSize
プロパティを使用するだけでは、コメントがの単一行に変換されるため、受け入れられません。ここに私の考えがあります:Excelのコメントを自動サイズ調整する方法は?
AutoSize
をtrueに設定します。- コメントの寸法を という単一行で計算します。
- 1行コメントの領域を3x4のアスペクト比に調整することで、新しい次元を計算することができます。
このアプローチの問題は、長いコメント、および改行で、特にコメントに、これは下で空白を残していることです。
はへの道はコメント高さはありませんので(あるいは、少なくとも、あまりない)空白があるを調整しないありますか?コメントの最後の文字が表示されているかどうかを検出し、サイズを調整しない場合は?あるいは何か他のものを使う?
試行錯誤では、テキストの量(正確には、単一行の自動サイズのコメントの長さや面積)に基づいてコメントの高さをどれだけ調整できるかによってかなり分かりました。短いコメントの場合は約0.7、長いフォントの場合は0.52(デフォルトフォント/ etcを使用)です。しかし、の改行をに投げると、さらに複雑になります(タイトル改行を数えずに、改行ごとにテキストの約25%を占めると考えました)。私はそれをより正確で壊れにくくしたい(別のフォントのために壊れた場合など)。
もっと良い方法があれば教えてください。 (長いコメントのために)1行でなく、不必要な空白を多く残さず、コメントテキストが切り取られない限り、私は任意のアイデアを公開しています(テキストが切り取られるかどうかは気にしませんExcelスプレッドシートの境界線による権利)。
Sub AutoSizeCommentInSelectedCellTest()
Dim cellComment As Comment ' selected cell
Dim area As Double ' comment rectangle area
Const MAX_COMMENT_WIDTH = 300
' Make sure we have a seected cell.
If ActiveCell Is Nothing Then
Exit Sub
End If
' Make sure we have a comment in the selected cell.
Set cellComment = ActiveCell.Comment
If cellComment Is Nothing Then
Exit Sub
End If
With cellComment
With .Shape
' AutoSize will covert comment to a single line.
.TextFrame.AutoSize = True
' If comment's width is shorter than max, we're done.
If .width < MAX_COMMENT_WIDTH Then
Exit Sub
End If
' Calculate area of the comment text rectangle
' for a single-line comment.
area = .width * .height
' Make new comment area roughly 4h x 3w.
.width = (VBA.Sqr(area/12)) * 3
.height = (VBA.Sqr(area/12)) * 4
' Now, for longer comments, and especially comments
' with line break, this leaves a lot of white space
' at the bottom. How do we fix it?
End With
End With
End Sub
コメントは改行を持っている場合、X文字がなしがある場合、単純に1を追加する方が簡単な場合があり...自動サイズ一行にではありません1つ...あなたが私の言葉を得るなら...しかし、私は自分でいくつかのテストを実行します(自動サイズの問題を覚えることはできません) –
@Dirk Reichel:うーん...おそらく、コメントをサイズ変更するのは間違いありません(新しい領域の大きさに基づいてサイズを変更するので)。私はいくつかのテストを実行します。 (男、他のWindowsプログラムでツールチップのように機能しないのはなぜですか?あるいは、少なくともテキストの領域を決定するAPIを持っていたのです!) –
@Dirk Reichel:はい、あなたは正しい:各段落を単一の複数の行(各段落に1つ)があります。私は新しい行をいくつかの特殊な文字の組み合わせ、自動サイズ変換して新しい行に戻すことができるのだろうかと思っています。 –