1

新しいシートを作成してシート 1 をコピーするボタンを含む Excel 2010 スプレッドシートを作成しようとしています。シートにテーブルが含まれていることを除いて、すべてを理解しました。同じ名前のテーブルを 2 つ持つことはできないため、シートをコピーすると、テーブルの名前が変更されます。私がまとめた VBA スクリプトには、テーブルのヘッダー行を選択する必要があるセクションがあります。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = ActiveSheet.Range("C2")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
       Is Nothing Then
    If ActiveSheet.Range("C2") = "KeyWord" Then
        ActiveSheet.ListObjects(1).Range("Table1[[#Headers],[Product]]").Select
        Selection.AutoFilter
        ActiveSheet.ListObjects(1).Range.AutoFilter Field:=6, Visibledropdown:=False, Criteria1:= _
        Array("All", "AS", "ASD", "ASDF"), Operator:=xlFilterValues
        ActiveSheet.Range("C3").Select
        ActiveSheet.Name = ActiveSheet.Range("C2")
    End If
End If
End Sub

「ActiveSheet.ListObjects(1)」を使用してシートの最初のテーブルを指定することでテーブルの名前変更を回避できますが、ヘッダーを選択する範囲を指定するときに、最初のテーブルの現在の名前を指定する方法が見つかりませんページで。

.Range("Table1[[#Headers],[Product]]").Select

テーブルのヘッダーの最初のセルを指定して変数セットを使用して連結しようとしましたが、連結には変数を指定する前に「テキスト」値が必要なようです。

別の考えは、テーブルの現在の名前をどこかに保存し、テーブルの名前を静的な値に変更し、実行する必要があるコードを実行してから、テーブル名を古い一意の名前に戻すことでした。しかし、私はそれを行う良い方法を理解できませんでした。

シートは複数回コピーされる可能性があり、そのたびにテーブルの名前が変わるRange()ため、特定の名前に設定せずにコマンド内でテーブル名を指定する方法が必要です。

どんな助けでも大歓迎です。

4

2 に答える 2