8

だから、今日は私の悪い日です
私はExcel行AutoFit-が機能しないことを発見しました

a = "Please"
b = "Do AutoFit"
range01.Value = a & vbNewLine & b  
range01.EntireRow.AutoFit // First and last line are horizontally cutted  

vbNewLineの代わりにChr(10)-役に立たない
改行なしで書いた場合にのみ機能します。

range01.value = a & b
range01.EntireRow.AutoFit  //  works !!!  Thanks to Microsoft !
4

5 に答える 5

15

改行のあるセルで[テキストの折り返し]がオンになっていることを確認してください。次のようにVBAでオンにできます。

Sub test1()
    Dim a As String, b As String
    a = "Please"
    b = "Do AutoFit"
    Range("A1").Value = a & vbNewLine & b
    Range("A1").WrapText = True
    Range("A1").EntireRow.AutoFit
End Sub
于 2012-08-26T19:54:43.297 に答える
6

Autofitは、結合されたセルでは機能しません。私の推測では、それがあなたがやろうとしていることです。

マージされたセルと同じ幅の単一のセルで自動調整をシミュレートし、それが与える高さを設定することで、これを回避します。

このようなもの:

Dim YourString As String, a As String, b As String
Dim TempLoc as Range

a = "Please"
b = "Do AutoFit"
YourString = a & vbNewLine & b
Set TempLoc = range01.offset(0, 10) ' Given the column 10 columns to the right has the exact same witdh as your merged cell.

' Autofit a single cell to get correct height
With TempLoc
       .Value = YourString
       .WrapText = True
       .EntireRow.AutoFit
       .RowHeight = TempLoc.RowHeight
       .ClearContents
End With
于 2013-08-27T17:54:09.600 に答える
3

あなたができること:

Private Sub Worksheet_Activate()
Worksheets("Sheet1").Range("A:A").EntireRow.AutoFit
End Sub
于 2014-07-16T16:58:14.120 に答える
3

私はこれに関する問題を解決しました-両方ともChr(10)改行を含む複数行のテキストを含む2つのマージされたセルを持つ行がありました-ラップがオンに設定されています(ただし、実際には行が折り返されません-Chr(10)のみが新しい行を引き起こします) 。セルが結合されているため、自動調整は機能しません。

VBAの回避策は、同じ行にスペアセルを使用し、複数行のセルの1つ(いずれか)にあるのと同じ数のChr(10)で埋めることでした。次に、同じ数の非表示の改行が含まれているそのセルに対してAutoFitを呼び出します。スペアセルのフォントとサイズが同じであることを確認してください。

' make C36 spare cell contain the same number of Chr(10) as D36, using a Repeat function :
' (after counting Chr(10) by comparing the length before and after substituting Chr(10) with "")
Worksheets(1).Range("C36").Value = _
   Application.WorksheetFunction.Rept(Chr(10), _
     Len(Worksheets(1).Range("D36").Value) - Len(Replace(Worksheets(1).Range("D36").Value, Chr(10), "")))
Worksheets(1).Range("C36").Rows.AutoFit

他のシナリオの代替方法は、余分な非表示のワークシートを使用することです。単一のセルを結合されたセルと同じ列幅に設定し、内容をコピーして、autofit(結合されていないセルで機能するはずです)を呼び出してから、その行の結果の行の高さ。

于 2015-01-15T11:40:36.753 に答える
0

回避策の1つは、自動調整の問題を引き起こしている列の列幅を少し縮小し、変更するすべての行を選択し、行セパレーターの1つをダブルクリックして行の高さを自動調整し、最後に自動調整することです。列セパレーターをダブルクリックして、最初のステップの列を選択します。セル内のテキストが一貫して1つまたは数列しかない場合に、おそらく最適に機能します。

于 2018-05-11T15:12:19.667 に答える