Block if without end if что значит

Оператор End If должен иметь соответствующий оператор If . An End If statement must have a corresponding If statement. Эта ошибка имеет следующие причину и решение: This error has the following cause and solution:

  • Предложение If было опущено или отделено от оператора End If. The If clause was omitted or is separated from the End If. Проверьте другие управляющие конструкции в структуре If. End If и убедитесь, что они правильно согласуются друг с другом. Check other control structures within the If. End If structure and verify that they are correctly matched. Также проверьте правильность форматирования блока If. Also check that the block If is correctly formatted.

Для получения дополнительной информации выберите необходимый элемент и нажмите клавишу F1 (для Windows) или HELP (для Macintosh). For additional information, select the item in question and press F1 (in Windows) or HELP (on the Macintosh).

Поддержка и обратная связь Support and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь. Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.

> If A(i, j) > max Then max = A(i, j): imin = i: jmax = j Else If A(i, j) End If ЗДЕСЬ ОШИБКУ ВЫДАЁТ
Два IF и только один END IF.
Попробуй слитно написать: ElseIf.
Не нужно пытаться написать все в одну строку, пиши каждый оператор с новой строки:
If A(i, j) > max
max = A(i, j)
imin = i
jmax = j
ElseIf A(i, j)

Читайте также:  Электрическая схема маломощного адаптера сетевого напряжения

I am trying to run this macro to shift data up on multiple sheets after the rows have been deleted. I keep getting a compile error

Here is my VBA code:

2 Answers 2

Always format and indent your code correctly, otherwise you don’t see your issues (I did that for you in your question).

Now you see that the first 3 With have no End With . Every With needs its own End With !

Also there is a End If that is too much because all your If statements are 1-liners and then doen’t need a End If .

There are 2 types of If statements:

1-liners If … Then … Else

Note that in 1-line-statements no End If is allowed.

You cannot mix them.

Additionally I recommend to use descriptive variable names instead of ws1 , ws2 , … Which makes your code much more readable and better maintainable.