列表中的新工作表,将模板复制到新工作表中,并在工作表名称后命名单元格A1

时间:2018-10-30 12:59:04

标签: excel vba templates

我昨天刚刚了解了VBA,并且很高兴继续学习。就是说,我有一个报告,可以在SharePoint中运行以进行工作,并为报告的每一行创建一个新工作表(名为“ Matrix”的表)。每张工作表都基于每行的第一个单元格进行命名。然后,我有了一个模板(名为“隐藏”的工作表),该模板可以复制到创建的每个工作表中。最后,我必须在工作表名称后命名单元格A1。从那里开始,模板中的公式会根据矩阵中的信息加入并填充模板的其余部分。

到目前为止,我已经能够清理Matrix中的数据,并正确地创建具有名称的新工作表(感谢到目前为止我在本网站上发现的所有问题的答案!)。我找不到有关如何将模板复制到多个新工作表中以及如何在工作表名称后命名每个工作表中的单元格的任何信息。我不认为这会很困难。

这是我到目前为止的内容(很抱歉,它并不十分精确-正如我所说,我昨天才开始编写代码)。

    Sub FullMacro()
    ' Replace Macro
    Columns("J:J").Select
    Selection.Replace What:="/", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
     [C:C].Select
    With Selection
    .NumberFormat = "General"
    .Value = .Value
    End With

    ' Dropdown SheetName
    Dim i As Integer
    Dim LastRow As Integer
    Set Worksheet = ThisWorkbook.Sheets("Matrix")
    LastRow = Worksheets("Matrix").Cells(Worksheets("Matrix").Rows.Count, "B").End(xlUp).Row
    Range("A2").Select
    Selection.AutoFill Destination:=Range("A2:A" & LastRow), Type:=xlFillDefault
    Range("A2:A" & LastRow).Select

    ' SortNumber Macro
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveWorkbook.Worksheets("Matrix").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Matrix").AutoFilter.Sort.SortFields.Add Key:=Range _
     ("C1"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
    xlSortNormal
    With ActiveWorkbook.Worksheets("Matrix").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With

    ' Add Named Sheets
    LastRow = Worksheets("Matrix").Cells(Worksheets("Matrix").Rows.Count, "B").End(xlUp).Row
    For i = 1 To LastRow
    Sheets.Add
    ActiveSheet.Name = Worksheets("Matrix").Cells(i, 1).Value
    Next i

    ' MoveMatrix Macro
    Sheets("Matrix").Select
    Sheets("Matrix").Move Before:=Sheets(1)

    ' ReSortNumber Macro
    ActiveWorkbook.Worksheets("Matrix").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Matrix").AutoFilter.Sort.SortFields.Add Key:=Range _
    ("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
    With ActiveWorkbook.Worksheets("Matrix").AutoFilter.Sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
    End With
    Application.DisplayAlerts = False
    For Each Worksheet In ActiveWorkbook.Sheets
    If Worksheet.Name = "SheetName" Then
    Worksheet.Delete 
    End If
    Next Worksheet
    Application.DisplayAlerts = True

    End Sub

0 个答案:

没有答案