Переименование листов только что сделано в циклах при поиске и замене значения ячейки - PullRequest
0 голосов
/ 31 марта 2020

Мой код в настоящее время создает 9 листов. Он равен числу ячеек в строке 1, начиная со столбца C в 'LLP Dis c Sheet', что равно 9. Это число изменяется всякий раз, когда пользователь удаляет ячейки в этой строке или добавляет дополнительные ячейки.

Теперь я хочу переименовать каждый произведенный лист (9 листов), чтобы он равнялся значению ячейки в первой строке «LLP Dis c Sheet». Например, один лист будет называться 77777 (C1 в «LLP Dis c Sheet»), другой лист - 66666 (D1 в «LLP Dis c Sheet»), 55555 (E1 в «LLP Dis c Sheet»). ') , и так далее. Я продолжаю получать сообщение об ошибке всякий раз, когда я пытался сделать ActiveSheet.rename

Наконец, я хочу изменить формулу B1 на каждом листе из 9 произведенных листов, чтобы соответствовать названию листа. Полученные 9 листов являются копиями «MasterCalculator», поэтому я попытался найти / заменить, но ошибка все равно была.

Set rng = ws.Range("B1") 'initialize the target range variable
rng.Replace "=+'LLP Disc Sheet'!C", "=+'LLP Disc Sheet'!D"  'but I want to somehow loop it so it continues to K, because that's how many sheets there ar

Модуль 1

Option Explicit
Sub NewSheets()
Dim i As Integer
Dim ws As Worksheet
Dim sh As Worksheet
Set ws = Sheets("MasterCalculator")
Set sh = Sheets("LLP Disc Sheet")
Application.ScreenUpdating = 0
For i = 2 To Range("A1:Z1").Cells.SpecialCells(xlCellTypeConstants).Count
Sheets("MasterCalculator").Copy After:=sh
Next I
End Sub

1 Ответ

0 голосов
/ 31 марта 2020

Работает ли это для первого бита?

Вы должны добавить некоторые сообщения об ошибках в случае отсутствия констант (и может потребоваться проверка для правильных имен листов).

Для формулы Похоже, вы можете заменить оригинальное имя листа на sh.name?

Sub NewSheets()

Dim i As Long
Dim ws As Worksheet
Dim sh As Worksheet

Set ws = Sheets("MasterCalculator")
Set sh = Sheets("LLP Disc Sheet")
Application.ScreenUpdating = 0

With ws.Range("A1:Z1").Cells.SpecialCells(xlCellTypeConstants)
   For i = 2 To .Count
       ws.Copy After:=sh
       sh.Name = .Cells(i).Value
   Next i
End With

Application.ScreenUpdating = 1

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...