Я только что узнал о 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