web-dev-qa-db-ja.com

テキスト入力中にExcelで列幅を自動サイズ設定する方法

私は通常ExcelでVBAを避けようとしますが、セルにテキストを入力し、入力または削除したときに残っているテキストに対応するために列を広くしたり狭くしたりできると便利です。

もちろん、これは列の他のセルのテキストの長さの影響を受けます。

「入力時に自動調整」、あなたはそれを呼ぶかもしれないと思います。

適切なハンドラーでこれを行う簡単な方法はありますか?

10
ChrisA

タイピング中にそれを行う方法があるかどうかはわかりません。 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
10
Fink

私はあなたが求めていることをする方法を考えることはできませんが、あなたの必要性に非常に近い何かをすることができます。最新バージョンのExcel(2010以降、2007バージョンについてはわかりません)では、セルにデータを入力し終えたらすぐに、次のマクロを使用して列のサイズを変更し、データに合わせることができます。

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Application.ScreenUpdating = False
    ActiveSheet.Columns.AutoFit
End Sub

ThisWorkbookモジュールにマクロを配置します

0
Sathish

シートで前の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

-。リバーラス。

0
Reverus

これは自動的に列幅に適合します

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Columns.AutoFit
End Sub
0
aym has