2017-03-22 9 views
0

私は、行ごとの文字数に基づいて、私のExcel文書でテキストを自動折り返しにする方法を探しています。Excelで自動サイジングと自動折り返し

私はまた、自動サイズ調整を継続するために私の細胞のためのように、私はそれのために、次のVBAコードを使用しているだろう:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Application.ScreenUpdating = False 
For Each Value In Target.Columns 
    Worksheets(Sh.Name).Columns(Value.Column).AutoFit 
Next Value 
Application.ScreenUpdating = True 
End Sub 

任意のアイデア?

+0

あなたはセルをラップしたいですか?ラップするセルをどのように知っていますか?最大は何ですか? 1行に必要な文字数?ラップをしたいのですか、ラップを挿入したい場所に手動改行を挿入することはできますか? – BruceWayne

+0

こんにちはブルース、すべての非常に良い点。私はVBAの方法(自動サイジングの列コードのような)があれば、150文字以上の文字数を持つセルは自動的に折り返されますか? –

答えて

0

この商品をお求めの客様はこんな商品もお求めです。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
Application.ScreenUpdating = False 
Dim Val As Range 
For Each Val In Target.Columns 
    Worksheets(Sh.Name).Columns(Val.Column).AutoFit 
    If Len(Val) > 150 Then 
     Val.WrapText = True 
    End If 
Next Value 
Application.ScreenUpdating = True 
End Sub 

注:それはVBAで「予約語」ですので、私は、変数としてValueを使用していないお勧めします。私はまた、Valueがセルだと仮定しているので、Rangeとして定義しました。 Valueが150文字を超えているかどうかを確認し、そうであればテキストを折り返します。

問題が解決しない場合は、ここでのセルは、150以上の文字が含まれているかどうかを確認し、そうであれば、テキストをラップする一般的な方法です:

Sub autoFitCell() 
Dim cel As Range 
Set cel = Range("A1") 
If Len(cel) > 150 Then 
    cel.WrapText = True 
End If 
End Sub 
+0

うーん、私は150が多かったので最初のVBAコードをコピー/ペーストし、> 150を> 30に変更してからVBAエディタを閉じたことに気付きました。それは何もしていないようだ。 セルをダブルクリックすると、VBAが開き、「コンパイルエラー:無効な次の制御変数参照」というポップアップが表示されます。 –

関連する問題