2016-12-05 20 views
1

場所のリストに基づいてテーブル(「TableTotal」)に列を挿入しようとしています。そのリストは、その場所の数に応じてサイズが変化します。excel vba - リストに基づいてテーブルに列を追加する

私はテーブルを挿入し、シートを作成し、「CreateSheetsFromAList2」で作成した最後の2枚は、初期テーブルの各々に基づいて、「TOTAL」の計算を行うためのテーブルを持っている必要があります

Sub RunAllMacros() 
CreateSheetsFromAList 
CopyTable 
CreateSheetsFromAList2 
End Sub 
Sub CreateSheetsFromAList() 
    Dim MyCell As Range, MyRange As Range 

    Set MyRange = Sheets("Summary").Range("B3") 
    Set MyRange = Range(MyRange, MyRange.End(xlDown)) 

    For Each MyCell In MyRange 
     Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet 
     Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet 
    Next MyCell 

End Sub 

Sub CopyTable() 

Dim WS_Count As Integer 
Dim i As Integer 
WS_Count = ActiveWorkbook.Worksheets.Count 

Dim Source As Range 

Set Source = ThisWorkbook.Worksheets(2).Range("TableTemp[#All]") 

' Begin the loop. 
For i = 3 To WS_Count 

    ThisWorkbook.Worksheets(i).Select ' just select the sheet 
    Source.Copy 
    ActiveSheet.Paste 
    ActiveSheet.ListObjects(1).Name = "Table" & ActiveSheet.Name 

Next i 

End Sub 
Sub CreateSheetsFromAList2() 
    Dim MyCell As Range, MyRange As Range 

    Set MyRange = Sheets("Summary").Range("M1") 
    Set MyRange = Range(MyRange, MyRange.End(xlDown)) 

    For Each MyCell In MyRange 
     Sheets.Add After:=Sheets(Sheets.Count) 'creates a new worksheet 
     Sheets(Sheets.Count).Name = MyCell.Value ' renames the new worksheet 
    Next MyCell 
End Sub 

を使用してテーブルの名前を変更作成した。

私はそれらのシートにコピーして貼り付けたいテンプレートテーブルがありますが、範囲 "B3"から使用される最初のリストに依存する最初の列を挿入する必要があります。

私はこれを正しく列の右の数を挿入し、以下の

Sub Insert_Columns() 
    On Error Resume Next 
    Columns("M").Resize(, Range("C3").Value).Insert 
    On Error GoTo 0 
End Sub 

を使用して挿入する列の数を取得し、私の「TableTotal」における適切な場所にそれらを置くためにCOUNTAを介して管理されているが、彼らは私が持っている場所の数に基づいて列1からXのようなヘッダーを持っています

私はB3リストに基づいて特定のヘッダー名でこれらの列を挿入する方法を探しています。

さらに、これらの各テーブル列には、同じTableName参照を使用してCreateSheetsFromAListで作成されたテーブルを参照する数式が含まれます。

答えて

0

このサブをお試しください:

​​

ヘッダは、ワイドで最も1列にする必要があります。引数として渡された範囲で指定されたヘッダを持つ列Mの後に列を挿入します。

関連する問題