#vba #insert #find
Вопрос:
У меня есть следующий код, чтобы вставить строку выше первого вхождения слова, запланированного в столбце D, а затем найти первое вхождение слова Заблокировано и вставить строку выше этого, но когда я пытаюсь найти первое вхождение сегодняшней даты в столбце C и вставить строку выше, это не работает. Любая помощь будет очень признательна. Я планирую продолжить код с поиском завтрашней даты и вставкой строки выше и т. Д
Dim cl As Range
Set cl = Range("D:D").Find("Scheduled")
If Not cl Is Nothing Then cl.Select
ActiveCell.Offset(0).EntireRow.Insert
ActiveCell.Offset(0, -3).FormulaR1C1 = "SCHEDULED"
Set cl = Range("D:D").Find("Roadblock")
If Not cl Is Nothing Then cl.Select
ActiveCell.Offset(0).EntireRow.Insert
ActiveCell.Offset(0, -3).FormulaR1C1 = "ROADBLOCKED"
Set cl = Range("C:C").Find([Today()])
If Not cl Is Nothing Then cl.Select
ActiveCell.Offset(0).EntireRow.Insert
ActiveCell.Offset(0, -2).FormulaR1C1 = "DUE TODAY"
Комментарии:
1. Возможно, это не связано, но, судя по вашему отступу, вы ожидаете, что эти строки с отступом будут частью вашего
If
заявления, а это не так. Они будут работать каждый раз, независимоcl
от того, ничего это или нет.2. @Брэкс. Ты прав, я только что это обнаружил. Он отлично работает, если он находит «Запланированное», но если он его не находит, он просто вставляет строку в последнюю выбранную ячейку. Я попробовал команду Else, чтобы перейти к следующему разделу, если «по расписанию» не найдено, но получил ошибку. Мне придется сделать кое-какую домашнюю работу, чтобы разобраться в этом; или начать другой пост. Спасибо
Ответ №1:
Замените строку
Set cl = Range("C:C").Find([Today()])
с
Set cl = Range("C:C").Find(Date)
Надеюсь, этого будет достаточно. Если нет, убедитесь, что форматы ваших дат совпадают. Попробуйте a Debug.Print Date()
, чтобы узнать, соответствует ли VBA формату даты в ваших ячейках.