私は通常ExcelでVBAを避けようとしますが、セルにテキストを入力し、入力または削除したときに残っているテキストに対応するために列を広くしたり狭くしたりできると便利です。
もちろん、これは列の他のセルのテキストの長さの影響を受けます。
「入力時に自動調整」、あなたはそれを呼ぶかもしれないと思います。
適切なハンドラーでこれを行う簡単な方法はありますか?
タイピング中にそれを行う方法があるかどうかはわかりません。 Excelは通常、worksheet_changeイベントを発生させる前に、セルビューを拡大してすべてのテキストを表示すると思います。
このコードは、ターゲットを変更して新しい範囲に移動した後、列のサイズを変更します。ワークシートモジュールに配置します。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nextTarget As Range
Set nextTarget = Range(Selection.Address) 'store the next range the user selects
Target.Columns.Select 'autofit requires columns to be selected
Target.Columns.AutoFit
nextTarget.Select
End Sub
特定の列に対してそれを実行しようとしている場合は、次のようにターゲット列を確認する必要があります。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nextTarget As Range
Set nextTarget = Range(Selection.Address) 'store the next range the user selects
If Target.Column = 1 Then
Target.Columns.Select 'autofit requires columns to be selected
Target.Columns.AutoFit
nextTarget.Select
End If
End Sub
私はあなたが求めていることをする方法を考えることはできませんが、あなたの必要性に非常に近い何かをすることができます。最新バージョンのExcel(2010以降、2007バージョンについてはわかりません)では、セルにデータを入力し終えたらすぐに、次のマクロを使用して列のサイズを変更し、データに合わせることができます。
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Application.ScreenUpdating = False
ActiveSheet.Columns.AutoFit
End Sub
ThisWorkbookモジュールにマクロを配置します
シートで前の2つの回答を試したところ、何もしませんでした。「ByValSh」が問題である場合はidk ??タイプミスでしたか?
とにかく、これが私の答えです、それをチェックして、それは機能します:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target Is Nothing Then
Exit Sub
Else
With Target
.Columns.Select
.Columns.AutoFit
End With
End If
End Sub
-。リバーラス。
これは自動的に列幅に適合します
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Columns.AutoFit
End Sub