2016-12-05 5 views
1

Ich versuche, Spalten in eine Tabelle ("TableTotal") basierend auf einer Liste von Standorten beginnend bei B3 und nach unten. Diese Liste variiert in Abhängigkeit von der Anzahl der Standorte.Excel VBA - Hinzufügen von Spalten in Tabelle basierend auf Liste

ich erstellen Blätter, Einfügen von Tabellen, und benennen Sie die Tabellen mit

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 

Die letzten 2 Blätter mit „CreateSheetsFromAList2“ erstellt wurden, müssen Tabellen haben eine „TOTAL“ Berechnung zu tun, basierend auf jeder der ursprünglichen Tabellen erstellt.

Ich habe eine Vorlage-Tabelle, die ich kopieren und in diese Blätter einfügen möchte, aber ich muss die ersten Spalten einfügen, die von der ersten Liste aus dem Bereich "B3" abhängig sind.

Ich habe durch eine COUNTA verwaltet die Anzahl der Spalten zu erhalten, und sie in meinem „TableTotal“ an der richtigen Stelle eingefügt legen Sie die unten

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

mit dieser richtig die richtige Anzahl von Spalten, aber sie haben Header als Spalte 1 bis X basierend auf wie viele Standorte ich habe

Ich bin auf der Suche nach einer Möglichkeit, diese Spalten mit dem spezifischen Header-Namen basierend auf der B3-Liste direkt einzufügen.

Darüber hinaus enthält jede dieser Tabellenspalten eine Formel, die auf die Tabellen verweist, die in CreateSheetsFromAList mit demselben TableName-Verweis erstellt wurden.

Antwort

0

dieses Unter Versuchen:

Sub insertColumnsWithHeaders(headers As Range) 

    Dim i As Integer 
    For i = headers.End(xlDown).row To headers.End(xlUp).row Step -1 
     columns("M").Insert 
     Range("N1") = Cells(i, headers.Cells(1, 1).Column) 
    Next 

End Sub 

Headers muss breit höchstens 1 Spalte sein. Fügt Spalten nach Spalte M mit Kopfzeilen ein, die in dem als Argument übergebenen Bereich angegeben sind.

Verwandte Themen