Страницы: 1
RSS
Как в макросе задать условие "если ошибка" - #ЗНАЧ!
 
Подскажите, пожалуйста, как правильно задается условие "если ошибка"
Мне необходимо указать ошибку: #ЗНАЧ!
Код
Sub test3()
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To lastRow
        If Cells(i, 6).Value = 2 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 5
        If Cells(i, 6).Value = 5 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 10
'        If Cells(i, 6).Value = "#ЗНАЧ!" And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = Error And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = "#Error" And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = "#N/A" And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15      
    Next i
End Sub
 
Код
If Cells(i, 6).Value = CVErr(xlErrNA)
 
Скрытый текст
Код
Sub test3()
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To lastRow
        If Cells(i, 6).Value = 2 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 5
        If Cells(i, 6).Value = 5 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 10
        If Cells(i, 6).Value = CVErr(xlErrNA) And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
    Next i
End Sub

Выдает ошибку:
Run-time error '13':
Type mismatch
Изменено: se_arts - 13.03.2018 22:48:11
 
Код
If IsError(ActiveCell.Value) Then MsgBox "В ячейке - ошибка!"
 
Цитата
se_arts написал:
If Cells(i, 6).Value = CVErr(xlErrNA) And Cells(i, 5).Value <> "" Then
В любом случае надо разбивать на два отдельных условия:
Код
If Cells(i, 5).Value <> "" Then
if Cells(i, 6).Value = CVErr(xlErrNA) then
Cells(i, 7).Value = 15
end if
end if

Но если надо проверять на ЛЮБЫЕ ошибки - то лучше воспользоваться вариантом ZVI
Цитата
ZVI написал:
If IsError(ActiveCell.Value) Then
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий, все равно выдает ошибку "13"
Код
Sub test3()
    Dim LastRow As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To LastRow
        If Cells(i, 6).Value = 2 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 5
        If Cells(i, 6).Value = 5 And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 10
'        If IsError(Cells(i, 6).Value) Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = CVErr(xlErrNA) And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = CVErr(xlErrValue) And Cells(i, 5).Value <> "" Then Cells(i, 7).Value = 15
'        If Cells(i, 6).Value = CVErr(xlErrValue) Then Cells(i, 7).Value = 15
'        If IsError(ActiveCell.Value) Then Cells(i, 7).Value = 15
'    If Cells(i, 5).Value <> "" Then
'    If Cells(i, 6).Value = CVErr(xlErrNA) Then
'    Cells(i, 7).Value = 15
'    End If
'    End If
    
    Next i
End Sub
Пробую разные варианты - выдает одну и туже ошибку "13" - может я синтаксис неверно пишу?
Не может быть, чтобы все предложенные варианты приводили к одной ошибке.
Что я не правильно делаю? Не читаете правила форума.
Рисунки удалены: превышение допустимого размера вложения
Кнопка для оформления кода в сообщении - <...>
[МОДЕРАТОР]
Изменено: se_arts - 13.03.2018 22:47:07
 
У Вас ошибка выдается в строке (при i=16), следующей за заголовком цикла, которую Вы как раз не меняете во всех тестах. Смело нажимайте на Debug и убедитесь самостоятельно.
Изменено: sokol92 - 13.03.2018 15:32:43
Владимир
 
Посмотрел наконец файл - точно xlErrValue нужно:
Код
Sub test2() 
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To lastRow
        If Cells(i, 5).Value <> "" Then
            Select Case CStr(Cells(i, 6).Value)
            Case CStr(CVErr(xlErrValue)): Cells(i, 7).Value = 15
            Case "2": Cells(i, 7).Value = 5
            Case "5": Cells(i, 7).Value = 10
            End Select
            End If
        Next i
    End Sub

Или можно конечно искать просто "Error 2015"
Страницы: 1
Наверх