0

VBA ループを作成して、Excel プロジェクト内のすべてのテーブルのサイズを変更します。

テーブル名のリストは「Tlist」名前付き範囲に格納されます

テーブル名が書き込まれている場合、このコードはすべて機能します。

コードは列数のこのループで機能しますが、 x の 2 回目の参照でサイズ変更すると、「添え字が範囲外です」というエラーが発生します。

デバッグで 2 番目の x にカーソルを合わせると、Excel はそれを正しく読み取っているように見えますが、テーブルのサイズを変更することはできません。ループ内のテキストをサポートしていないリスト オブジェクト関数と関係がありますか? または、このループを間違って実行していて、x を別の方法で定義する必要がありますか? どんな助けでも大歓迎です。

    Sub RSizeTables()
    Dim rr As Integer
    Dim cc As Integer
    Dim x As Range
    Dim £Table As Range

    Set £Table = Range("Tlist")

    For Each x In £Table

    rr = 2
    cc = Range(x).Columns.Count

    With Sheets("Data").ListObjects(x)
    .Resize .Range.Resize(rr, cc)

    End With

    Next x


End Sub
4

1 に答える 1

2

このコードは、すべてのテーブルのサイズを 2 行に変更します。

Sub ResizeAll()
    Dim ws As Worksheet
    Dim lo As ListObject

    'If you only have tables in one sheet, use this
    Set ws = Sheets("Data")

    'Else this:
    'For Each ws in Sheets
    For Each lo In ws.ListObjects
        lo.Resize lo.Range.Resize(2)
    Next lo
    'Next ws
End Sub

のテーブルだけをループする必要がある場合はTList、次のようにします。

Sub ResizeTList()
    Dim varTableName As Variant

    For Each varTableName In Range("TList")
        With Sheets("Data").ListObjects(varTableName)
            .Resize .Range.Resize(2)
        End With
    Next varTableName
End Sub
于 2013-03-05T11:21:01.630 に答える