Страницы: 1
RSS
Синтаксис вложенных if, Проблема с вложенным if
 

Добрый день.

Помогите разобраться с синтаксисом вложенных if, пожалуйста. В примере ниже есть первый if , если условие выполняется - проверяются далее условия на другую ячейку. Идет следующий if, а далее к нему надо написать else. Но почему-то этот else применяется к самому первому if, а не к тому который перед ним идет.

Код
Sub Макрос2()
    With Worksheets("LF")
    Dim lLastRow As Integer
    Dim i As Integer
    lLastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 4 To lLastRow
    If Cells(i, 26).Value = "" Then
        If Cells(i, 7).Value = "10101" Then Cells(i, 26).Value = "[10101]"
        elseIf Cells(i, 7).Value = "Возврат" Then Cells(i, 26).Value = "[ВЗВ]"

    End If

    Next
    End With
End Sub

Конкретнее :

этот else

Код
 elseIf Cells(i, 7).Value = "Возврат" Then Cells(i, 26).Value = "[ВЗВ]"

должен относиться к этому if

Код
If Cells(i, 7).Value = "10101" Then Cells(i, 26).Value = "[10101]"

а получается почему-то к этому

Код
If Cells(i, 26).Value = "" Then

голову уже сломал, не могу понять как сделать как надо.

 
если пишите If ... then в одну строку, то elseif уже недопустим в этом условии. Только Else.
Код
If Cells(i, 7).Value = "10101" Then Cells(i, 26).Value = "[10101]" Else Cells(i, 26).Value = "[что-то]"

поэтому правильно будет так(с переносом на строки):
Код
If Cells(i, 26).Value = "" Then
    If Cells(i, 7).Value = "10101" Then
        Cells(i, 26).Value = "[10101]"
    elseIf Cells(i, 7).Value = "Возврат" Then 
        Cells(i, 26).Value = "[ВЗВ]"
    End if
End If
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
А при чем тут синтаксис?

elseif  ....  end if  Просто упрощает запись конструкции Else : If ...    : end if : end . Если вы сможте расписать логику без него, то потом упростите. А так
вы  этим себе все и испортили.
Код
If Cells(i, 7).Value = "10101" Then Cells(i, 26).Value = "[10101]"
Решит вашу проблему простой перевод строки
Код
If Cells(i, 7).Value = "10101" Then 
    Cells(i, 26).Value = "[10101]"
Изменено: БМВ - 09.03.2017 12:54:14
По вопросам из тем форума, личку не читаю.
 
The_Prist, БМВ, спасибо вам! Просто я новичок в VBA. Ту же задачу на PHP бы выполнил, а тут все по-другому, ругается постоянно на что-то. То "else без if", то "next без for", синтаксис непривычный.
Страницы: 1
Читают тему
Наверх