2016-03-06 4 views
0

Я ищу макрос, чтобы найти строку (в столбцах twho), которая содержит один из двух критериев: «» или «Productivité». После того, как я обнаружил первую строку, содержащую эти ячейки, я пытаюсь перемещаться по этой строке. если следующая нижняя ячейка не содержит ни «или», ни «productivité», я должен изменить размер диапазона, чтобы добавить к ней одну строку.Проверьте пустую ячейку в ячейке # N/A

Это проблема. Когда я тестирую Do While Not Range(strDépartPlage).Value Is Nothing And Range(strDépartPlage).Offset(, -1).Value <> "productivité", это не работает из-за первого состояние Do While Not Range(strDépartPlage).Value Is Nothing. И это связанно с тем, что клетки содержат #N/A. Как я могу иметь дело с этим?

Dim strFirstCelVideOuProd As String 
Dim rng1erCelVide As Range 
Dim rng1erCelProd As Range 

Set rng1erCelVide = Range("E3:E60").Find("", Range("E3"))     
Set rng1erCelProd = Range("D3:D60").Find("productivité", Range("D3")) 

If rng1erCelVide.Row < rng1erCelProd.Row Then 
    strFirstCelVideOuProd = rng1erCelVide.Address(False, False) 
ElseIf rng1erCelVide.Row > rng1erCelProd.Row Then 
    strFirstCelVideOuProd = rng1erCelProd.Address(False, False) 
End If 

Dim strDépartPlage As String 
count = 0 
strDépartPlage = Range(strFirstCelVideOuProd).Offset(1, 0).Address(False, False) 


Do While Not Range(strDépartPlage).Value Is Nothing And Range(strDépartPlage).Offset(, -1).Value <> "productivité" 
count = count + 1 
strDépartPlage = Range(strDépartPlage).Resize(count, 0).Address(False, False) 
MsgBox strDépartPlage 

Loop 

worksheet #N/A

другими словами, я пытаюсь извлечь адрес полигона между пустым ячейку и ячейку рядом с той, которая содержит «Productivité», и диапазона между ячейками рядом с теми, которые содержат «Productivité». An explanation

ответ

0

Документов, касающийся вашего дело, вы должны добавить проверку на «N/A» с помощью Excel Application.WorksheetFunction.IsNA() функции и исключить эти клетки из формулы, как, например:

Do While Not Range(strDépartPlage).Value Is Nothing And Not Application.WorksheetFunction.IsNA(strDépartPlage) And Range(strDépartPlage).Offset(, -1).Value <> "productivité" 
count = count + 1 
strDépartPlage = Range(strDépartPlage).Resize(count, 0).Address(False, False) 
MsgBox strDépartPlage 
Loop 

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

+0

Фактически первое условие создает ошибку: Range (strDépartPlage) .Value = Error2042 –

+0

Тогда вы можете удалить это дополнительное условие, вызывающее ошибку. Ответ дается в соответствии с основным вопросом, отраженным в названии вашего вопроса, поэтому, пожалуйста, отметьте его принятым, если он исправит эту основную проблему (проверьте # N/A #). Если у вас есть дополнительные вопросы/вопросы, отправьте их отдельно. Спасибо и приветствую, –

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