2016-12-05 64 views
1

我試圖根據位置列表從B3開始向下插入列(「TableTotal」)並且向下。該列表的大小將根據有多少位置而有所不同。excel vba - 基於列表在表中添加列

創建表,插入表格,並使用

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 

用「CreateSheetsFromAList2」創建的最後2片重命名錶需要具有用於基於每個初始表做一個「TOTAL」計算表創建。

我有一個模板表,我想複製並粘貼在這些工作表中,但我需要插入第一列,這些列依賴於範圍「B3」中使用的第一個列表。

我已經通過COUNTA設法要插入的列數,並把它們在我的「TableTotal」在正確的地方使用下面的

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

這正確插入的列權數量,但他們有標題列1到X根據我有多少個位置

我正在尋找一種方法來直接插入具有基於B3列表的特定標題名稱的列。

此外,每個表列將包含一個公式,該公式將使用相同的TableName引用引用在CreateSheetsFromAList中創建的表。

回答

0

試試這個子:

​​

頁眉需要至多1列寬。在列M之後插入列,並將範圍中指定的標題作爲參數傳遞。