2016-03-13 3 views
0

Мне нужно найти дату в столбце, а если не найти, остановите макрос. Дата взята из ячейкиОстановить макрос, если дата не найдена

Dim rng1 As Range 
Dim strSearch As String 
strSearch = Worksheets("Calculations").Cells(4, 3).Value 
MyInput.Activate 
Set rng1 = Range("H:H").Find(strSearch, , xlValues, xlWhole) 
If Not rng1 Is Nothing Then 
'Macro follows 
Else 
    MsgBox "Date not found" 
End If 
End Sub 

Что делает этот макрос, всегда возвращает поле сообщения, даже если дата существует.

Благодаря

+0

потому что поиск не удалось – Rosetta

+0

дата является числовым значением, а не строкой. попробуйте преобразовать его в число, используя DateValue – Rosetta

ответ

0

вы пытаетесь искать дату в качестве строкового типа. Я просто изменил strSearch на dteSearch с типом даты.

Dim rng1 As Range 
Dim dteSearch As Date 
dteSearch = Worksheets("Calculations").Cells(4, 3).Value 
MyInput.Activate 
Set rng1 = Range("H:H").Find(dteSearch, , xlValues, xlWhole) 
If Not rng1 Is Nothing Then 
'Macro follows 
Else 
    MsgBox "Date not found" 
End If 
End Sub 

Удачи вам!

+0

Привет, Спасибо за ответ. Это частично решает мою проблему. У меня есть сборщик дат в Microsoft. Если я выбираю дату «3/9/2016», она работает, но если я выберу любую другую дату, она все равно говорит, что дата не найдена, даже если эта дата существует. – user1778266

+0

Datepicker вернет серийный номер даты. если в вашем H Row есть некоторые даты форматирования текста, это будет работать не так, как ожидается, чтобы сравнить числа. Вы можете попробовать функцию форматирования метода Find. но, конечно, безопаснее иметь даты в правильном формате на вашей строке H. Надеюсь, это поможет :) – Hadi

+0

Или вы можете попробовать цикл VBA следующим образом: http://stackoverflow.com/questions/35531137/vba-goto-cell-with-a-certain-value-type-date/35531503#35531503 – Ambie