Использование макроса + формула IF + статическая дата? - PullRequest
0 голосов
/ 16 мая 2018

Я только начал использовать Excel, поэтому я немного новичок - извините за незнание / отсутствие правильной терминологии!

В настоящее время у меня есть столбец E, где люди вручную вводят «Y»пометить определенные учетные записи.После того, как эти учетные записи были помечены, у меня есть кнопка макроса, чтобы изменить все эти Y на «Помеченные», чтобы я знал, что с ними справились.

Я хотел, чтобы столбец F добавил дату, когда они были помечены, поэтому у меня есть формула IF, чтобы сказать, что, если 'Raised' находится в colE, добавьте сегодняшнюю дату в colF.У меня были проблемы с двумя вещами, во-первых, мне нужно было игнорировать те, у которых уже есть дата в colF (так как я не хочу, чтобы старые даты были переопределены), и я не знал, как «заморозить» дату.В настоящее время каждый раз, когда я открываю рабочую таблицу, она заменяет все старые даты на сегодняшнюю, но мне нужно сохранить любую дату на момент ее ввода.

Все, что я знаю, самообучается через форумы по чтению (поэтому, пожалуйста, прости меня, если это ужасно!), Но на данный момент я придумал следующее:

Sub ResetFlags()
'
' ResetFlags Macro
'

'
Sheets("Matrix").Select
Columns("E:E").Select
Range("E2").Activate
Selection.Replace What:="y", Replacement:="Flagged", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False
Range("E12").Select

Dim r As Range
Set r = Range("F:F").Cells.SpecialCells(xlCellTypeBlanks)
On Error Resume Next
r.Formula = "=IF((RC[-1]=""Flagged""),(TODAY()),"""")"
On Error Resume Next

End Sub

Theмакрос работает хорошо: он заменяет Y на «Помеченный», пропускает старые даты и добавляет сегодняшнюю дату. НО каждый раз, когда я открываю книгу, он изменяет ВСЕ даты на сегодняшние.Как заморозить дату?!

Кроме того, когда я запускаю макрос, хотя он все проходит в самом конце, я получаю окно с сообщением «Ошибка времени выполнения 1004: ячейки не найдены».Я не могу понять это / как избавиться от этого.

Большое спасибо !!

1 Ответ

0 голосов
/ 16 мая 2018

Думаю, это должно сделать это. Вы можете заменить формулу значением, чтобы она не обновлялась постоянно.

Ошибка при включении должна идти перед SpecialCells - если пробелов нет, диапазон, к которому можно применить формулу, отсутствует, следовательно, ошибка.

Кроме того, не нужно ничего выбирать.

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

Sub ResetFlags()

With Sheets("Matrix").Columns("E:E")
    .Replace What:="y", Replacement:="Flagged", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

    Dim r As Range

    On Error Resume Next
    Set r = .Range("F:F").Cells.SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0
End With

If Not r Is Nothing Then
    r.Formula = "=IF((RC[-1]=""Flagged""),(TODAY()),"""")"
    r.Value = r.Value
End If

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