Excel - застрял с кодом VBA для замены имен листов в форме даты в формулах - PullRequest
0 голосов
/ 23 июня 2019

Как, возможно, вводит в заблуждение заголовок, я пишу набор автоматизированных инструментов для рабочей книги и столкнулся с препятствиями.

У меня есть функция, которая генерирует новый лист и присваивает ему текущую дату в качестве имени в формате «дд-мм-гггг» (без кавычек), а другую - обновляет все необходимые формулы в новом листе. .

Существует столбец, который рассчитывает разницу между значениями в столбце между текущим и предыдущим листом. После выполнения код выполняет и заменяет имена, но по какой-то причине в качестве имени листа указывается только год, а не вся дата. Это приводит к недействительной ссылке на ссылку.

Пример: Предыдущее название листа: 23-5-2019

Текущее название листа: 25-5-2019

Измененная формула в текущем листе должна быть: = C3-'23-5-2019 '! C3

Но вместо этого он становится: = C3-23-5 -2019 '! C3

Код для замены ниже:

Sub FormulaUpdate()

range("D2:D100").Replace 
What:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.count - 2).name, 
Replacement:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.count - 1).name, 
LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

End Sub

Любая помощь очень ценится:)

1 Ответ

1 голос
/ 23 июня 2019

Я не смог воспроизвести это в коде, он работает, как и ожидалось, с приведенным ниже, когда я называю Лист (3) 23-5-2019 и Лист (2) 25-5-2019

Sub Macro3()
to_replace = Sheets(3).Name
replace_val = Sheets(2).Name
    Cells.Replace What:=to_replace, Replacement:=replace_val, LookAt:=xlPart _
        , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Я бы предложил пошаговую отладку и подтверждение значений для текста, чтобы найти и заменить значения непосредственно перед тем, как это произойдет.

Также подтвердите, что ваш новый лист был создан до выполнения поиска / замены..

Надеюсь, это поможет.

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