2015-05-28 6 views
1

У меня есть ячейка F2, которая содержит дату и отформатирована как поле «Пользовательская дата», отображающее только день и месяц.Найти, если дата присутствует в диапазоне ячеек (Excel VBA)

Тогда у меня есть диапазон ячеек C3;C60, который содержит также даты и отформатирован в европейском поле Date отображается dd/mm/yyyy

Я пишу VBA, который делает проверку на этих полях, но он не работает. в образце ниже переменной c может быть любая ячейка между F5 и F20.

я RuntimeError 91.

If Worksheets(1).Range("C3", "C60").Find(Worksheets(1).Cells(2, c.Column).Value) = True Then 
     c.Value = "Whatever"   
Else 

ответ

2

.Find() возвращает диапазон, оператор if проверяет, является ли это TRUE. Это не удастся.

Dim rng as Range 

Set rng = Worksheets(1).Range("C3:C60").Find(Worksheets(1).Cells(2, c.Column).Value) 
if not rng is Nothing then 
    c.Value = "Whatever"   
Else 

Примечание включение Gary's ответа

+0

спасибо! ошибка ушла, но t не находит значение ... – sharkyenergy

+0

Ничего, моя вина! работает как шарм! благодаря! – sharkyenergy

+0

Рад, что помогло. '.Find()' замечательный инструмент, но он поставляется с некоторыми «gotchas». Прочитайте это, и вы обнаружите, что это очень полезно, прыгать слепо и вам не понравится ... – FreeMan

2

Замены:

Range("C3:C60") 

для

Range("C3", "C60") 

Там могут быть и другие проблемы.

+0

спасибо, но вратаря решить – sharkyenergy

+1

@sharkyenergy см ** Freeman ** 's пост –

Смежные вопросы