私は通常、Excel で VBA を使用しないようにしていますが、セルにテキストを入力して、入力または削除された残りのテキストに合わせて列を広げたり狭めたりできると便利です。
もちろん、これは列の他のセルのテキストの長さの影響を受けます。
「入力時に自動調整」と呼ぶかもしれません。
適切なハンドラーでこれを行う簡単な方法はありますか?
私は通常、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
これにより、列の幅が自動的に調整されます
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Columns.AutoFit
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 モジュールに入れます