Новые листы из списка, скопировать шаблон в листы новостей и имя ячейки A1 после имени листа - PullRequest
0 голосов
/ 30 октября 2018

Я только что узнал о VBA вчера и очень рад продолжать учиться. Тем не менее, у меня есть отчет, который я запускаю для работы из SharePoint, и создаю новый лист для каждой строки отчета (лист с именем «Матрица»). Каждый лист получает имя на основе первой ячейки в каждой строке. Затем у меня есть шаблон (лист с именем «Скрытый»), который я копирую на каждый созданный лист. Наконец, я должен назвать ячейку 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...