10

私は通常、Excel で VBA を使用しないようにしていますが、セルにテキストを入力して、入力または削除された残りのテキストに合わせて列を広げたり狭めたりできると便利です。

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

「入力時に自動調整」と呼ぶかもしれません。

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

4

4 に答える 4

11

入力中にそれを行う方法があるかどうかはわかりません。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
于 2010-01-12T14:53:47.017 に答える
0

これにより、列の幅が自動的に調整されます

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Columns.AutoFit
End Sub
于 2015-01-14T13:05:04.640 に答える
0

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

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

マクロを ThisWorkbook モジュールに入れます

于 2014-10-01T10:52:57.777 に答える