End if without block if в чем ошибка
End If without block If
LinkBack
Thread Tools
Rate This Thread
Display
End If without block If
Part of a macro is below. There is an alternative block for ‘PN. To get over the problem do I have to put «End if» after » ActiveSheet.Paste» then begin another «If» block? I’d prefer a method of putting both paragraphs within the 1 «IF», just for convenience/ brevity.
‘EN
If Range(«aaj1») = 1 Then
Range(«aai3:aai182»).Select
Selection.Copy
Range(«k3:aag182»).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Paste
Range(«g3:aal182»).Select
ActiveWorkbook.Worksheets(«NewData»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«NewData»).Sort.SortFields.Add Key:=Range( _
«aaj3:aaj182»), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(«NewData»).Sort
.SetRange Range(«g3:AAL182»)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Range(«aaj3:aaj32»).Select
Selection.Copy
Range(«k3:aag32»).Select
ActiveSheet.Paste
End If
Re: End If without block If
Next time I’d put the code in code-brackets, makes it a lot easier to read (besides that it is a forum rule).
Above is effectively the same, if you can put what follows after the if-statement is on the same line you can skip the closing of the if-statement. If you need more room you can apply a closing statement.
Re: End If without block If
Re: End If without block If
I noticed that but that wasnt the question
Re: End If without block If
It is the answer to the problem though.
If the OP really wants help in structuring the code I think we would need to see more of it.
Re: End If without block If
I’ve not yet understood the answer. However, here’s both alternatives of the ‘If’ together with their ‘do stuff’ component:
‘EN
If Range(«aaj1») = 1 Then
Range(«aai3:aai182»).Select
Selection.Copy
Range(«k3:aag182»).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Paste
Range(«g3:aal182»).Select
ActiveWorkbook.Worksheets(«NewData»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«NewData»).Sort.SortFields.Add Key:=Range( _
«aaj3:aaj182»), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(«NewData»).Sort
.SetRange Range(«g3:AAL182»)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Range(«aaj3:aaj32»).Select
Selection.Copy
Range(«k3:aag32»).Select
ActiveSheet.Paste
End If
‘PN
If Range(«aaj1») = 0 Then
Range(«aak3:aak182»).Select
Selection.Copy
Range(«k3:aag182»).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Paste
Range(«g3:aal182»).Select
ActiveWorkbook.Worksheets(«NewData»).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(«NewData»).Sort.SortFields.Add Key:=Range( _
«aal3:aal182»), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(«NewData»).Sort
.SetRange Range(«g3:AAL182»)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Range(«aal3:aal32»).Select
Selection.Copy
Range(«k3:aag32»).Select
ActiveSheet.Paste
End If
The problem is missing End Withs.
For example, you open a With here but there’s no End With later in the code to close it.
PS Please add code tags, it makes the code a lot easier to read and it’s kind of a forum rule.
Block if without end if что значит
Problem Hey, I have been facing this error “Block if you End if” despite having used End if statement. … End If End Sub vba
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).
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.
End If without block If
Part of a macro is below. There is an alternative block for ‘PN. To get over the problem do I have to put “End if” after ” ActiveSheet.Paste” then begin another “If” block? I’d prefer a method of putting both paragraphs within the 1 “IF”, just for convenience/ brevity.
‘EN
If Range(“aaj1”) = 1 Then
Range(“aai3:aai182”).Select
Selection.Copy
Range(“k3:aag182”).Select
Selection.PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
ActiveSheet.Paste
Range(“g3:aal182”).Select
ActiveWorkbook.Worksheets(“NewData”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“NewData”).Sort.SortFields.Add Key:=Range( _
“aaj3:aaj182”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets(“NewData”).Sort
.SetRange Range(“g3:AAL182”)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
Range(“aaj3:aaj32”).Select
Selection.Copy
Range(“k3:aag32”).Select
ActiveSheet.Paste
End If
The IF statement and its various forms
The If statement is a conditional clause that helps us to run code using a condition that is decided during runtime. You might wonder, “What is the need to decide the condition during runtime? Can’t we decide that earlier?” In reality, there are many situations where an action needs to be performed only if certain criteria are met or a condition is fulfilled. Sometimes this check might even depend on the user’s input value.
For example, let us imagine that a bank offers 8% ROI on fixed deposit accounts if the customer is a senior citizen and only 6% ROI for other customers. In this case, the code that calculates the interest and maturity amount should both a) consider the age of the customer and b) use a condition to use different values for senior and non-senior citizens. This is where an “If conditional statement” steps in.
Now let’s see the code for the above scenario assuming that one must be 60 years old to be called a senior citizen.
Sub sample_coding()’declaration of variablesDim matamt, prinamt, roi, term, custage‘ receive input from usercustage = InputBox(“Enter the age of the customer”)‘ assign some valuesprinamt = 10000 ‘ Principal amountterm = 2 ‘ 2 years’ decide the roi valueIf custage < 60 Then roi = 6Else roi = 8End If’ formula to calculate the FD maturity amount.matamt = prinamt + (prinamt * roi * term / 100)‘ printing the outputDebug.Print matamtEnd Sub
Looking at the example above, we see that the syntax for using a simple If statement is
But the same conditional statement has different forms as listed below.
Related questions
Problem: Let me start off by saying that I am COMPLETELY new to programming. I have just recently picked up Python and it has consistently kicked me in the head with one recurring error — “expected an indented block” Now, I know there are several other … indentation has not given me better results. I have replaced all of my indents with 4 spaces and even rewritten the code several times.
asked Jan 10 Mashhoodch 13k points
Problem Can someone give me a hand to solve What is an indentation error in python? I need help understanding this error
asked Mar 7 neeraj 10.5k points
Problem: I am new to python and I have implemented the list in python and trying to access the list index but it getting me an error that is intend error by for loop don’t know what I am doing wrong in this code. I come from the C background so … File “main.py”, line 46 break ^ IndentationError: unindent does not match any outer indentation level Need someone to help me waiting for help!!
asked Jun 29, 2020 Gavin 15.3k points
Problem: I’m trying to create an application in Python 3.2 and I use tabs all the time for indentation, but even the editor changes some of them into spaces and then print out “inconsistent use of tabs and spaces in indentation” when I try to run the program. How can I change … would be glad if I could get some overall tips on my code, if I have done a lot of mistakes I would be happy to hear.
asked Jan 26 Mashhoodch 13k points
Problem: I’m trying to create an application in Python 3.2 and I use tabs all the time for indentation, but even the editor changes some of them into spaces and then print out “inconsistent use of tabs and spaces in indentation” when I try to run the program
asked Jan 9 Mashhoodch 13k points
I’m trying to create an application in Python 3.2 and I use tabs all the time for indentation, but even the editor changes some of them into spaces and then print out “inconsistent use of tabs and spaces in indentation” when I try to run the program. How can I change the spaces into … tyvärr, du är för ung, prova något annat”) return 0 elif self.alder >= 10: print(“Gå in om du törs!”) print(” “)
asked Oct 25, 2020 psandprop 2.4k points
Problem : I’m new to Python & trying to create an application in Python 3.2 and I use tabs all the time for indentation, but even the editor changes some of them into spaces and then print out “inconsistent use of tabs and spaces in indentation” when I try to run the program.
asked Oct 21, 2019 peterlaw 6.9k points
Problem: Has anyone had this complication before : Error: current transaction is aborted, commands ignored until end of transaction block?
asked Jun 13 Chi Omega 154k points
Problem: I tried to get executed with my except: statement… while attempt to oppose the functionality of UNIQUE constraint..But ended with exceptional error.. The Postgresql database table already contains the row that I have used, but it works well on inserting unrepeated … fetchall() print(row) db=database() db.insert(“The News”,”AparnaKumar”,1995,234569654) db.view() db.search(year=1995)
asked Apr 24 munim01 21k points
Problem: Memory clobbered past end of allocated block,
asked 5 days ago Aurelia Maja 60.6k points
11 ответов
(Этот метод работает для if s, нескольких вложенных циклов и других конструкций, которые вы не можете break легко получить.)
Оберните код в его собственную функцию. Вместо break используйте return.
def some_function(): if condition_a: # do something and return early … return … if condition_b: # do something else and return early … return … returnif outer_condition: … some_function() …
yanxun 7 Авг 2018 в 13:23
Используйте return в условии if, которое вернет вас из функции, так что вы можете использовать return, чтобы нарушить условие if.
Nikhil Parashar 18 Окт 2018 в 10:13
Итак, я понимаю, что вы пытаетесь вырваться из внешнего блока кода
if some_condition: … if condition_a: # do something # and then exit the outer if block … if condition_b: # do something # and then exit the outer if block# more code here
Одним из выходов из этого является то, что вы можете проверить наличие ложного условия во внешнем блоке if, который затем неявно выйдет из блока кода, а затем использовать блок else для вложения других if в что-то сделать
if test_for_false: # Exit the code(which is the outer if code)else: if condition_a: # Do something if condition_b: # Do something
Romeo 31 Май 2018 в 12:43
if some_condition: … if condition_a: # do something exit_if=True # and then exit the outer if blockif some condition and not exit_if: # if and only if exit_if wasn’t set we want to execute the following code # keep doing something if condition_b: # do something exit_if=True # and then exit the outer if blockif some condition and not exit_if: # keep doing something
Да, это также требует второго взгляда на читабельность, однако, если фрагменты кода малы, это не требует отслеживания циклов while, которые никогда не повторятся, и после понимания того, для чего нужны промежуточные if, это легко читается, все в одно место и с таким же отступом.
И это должно быть довольно эффективно.
DonQuiKong 7 Ноя 2018 в 08:24
По сути, вы описываете операторы goto, которые обычно довольно сильно панорамируются. Ваш второй пример гораздо проще понять.
Тем не менее, чище все равно будет:
if some_condition: … if condition_a: your_function1() else: your_function2()…def your_function2(): if condition_b: # do something # and then exit the outer if block else: # more code here
Smashery 15 Янв 2010 в 05:29
Вообще говоря, нет. Если вы вкладываете «если» и отказываетесь от них, вы делаете это неправильно.
Однако, если вы должны:
if condition_a: def condition_a_fun(): do_stuff() if we_wanna_escape: return condition_a_fun()if condition_b: def condition_b_fun(): do_more_stuff() if we_wanna_get_out_again: return condition_b_fun()
Обратите внимание, что функции НЕ ДОЛЖНЫ быть объявлены в операторе if, они могут быть объявлены заранее;) Это был бы лучший выбор, так как это позволит избежать необходимости рефакторинга уродливого if / then позже.
Enki 16 Апр 2010 в 03:02
Для того, что на самом деле было задано, мой подход состоит в том, чтобы поместить эти if внутри однопетлевого цикла
while (True): if (some_condition): … if (condition_a): # do something # and then exit the outer if block break … if (condition_b): # do something # and then exit the outer if block break # more code here # make sure it is looped once break
conditions = [True,False]some_condition = Truefor condition_a in conditions: for condition_b in conditions: print(“n”) print(“with condition_a”, condition_a) print(“with condition_b”, condition_b) while (True): if (some_condition): print(“checkpoint 1”) if (condition_a): # do something # and then exit the outer if block print(“checkpoint 2”) break print (“checkpoint 3”) if (condition_b): # do something # and then exit the outer if block print(“checkpoint 4”) break print (“checkpoint 5”) # more code here # make sure it is looped once break
izzulmakin 8 Сен 2015 в 08:16
if some_condition and condition_a: # do somethingelif some_condition and condition_b: # do something # and then exit the outer if blockelif some_condition and not condition_b: # more code hereelse: #blahif
ghostdog74 15 Янв 2010 в 05:28
Вы можете эмулировать функциональность goto с исключениями:
try: # blah, blah … # raise MyFunkyException as soon as you want outexcept MyFunkyException: pass
Отказ от ответственности: я только хочу представить вашему вниманию возможность действовать таким образом, но ни в коем случае не одобряю это как разумное в нормальных обстоятельствах. Как я уже упоминал в комментарии к вопросу, структурирование кода таким образом, чтобы избежать византийских условностей, в первую очередь, предпочтительнее. 🙂
Michał Marczyk 15 Янв 2010 в 05:35
Thomas Eding 19 Янв 2010 в 02:05
(На самом деле не используйте это, пожалуйста.)
ephemient 15 Янв 2010 в 05:29
Re: End If without block If
Next time I’d put the code in code-brackets, makes it a lot easier to read (besides that it is a forum rule).
Above is effectively the same, if you can put what follows after the if-statement is on the same line you can skip the closing of the if-statement. If you need more room you can apply a closing statement.
Re: End If without block If
The Compile Error “End If without Block If:
This is a simple compile time error that’s thrown when the code containing any If blocks do not comply with the syntax (or) such a statement does not exist.
Here are some instances where this error might occur
Rule 1: End If with single line statement
If the single line of code to be executed is placed in the same line as the “If – then” statement, then the “End If” statement needs to be omitted. In other words, the If statement is considered complete without an “End If” statement in cases where the conditional code is placed in the same line.
If <condition> Then <code>
For example:
The If condition in the above code can be rewritten using this rule to avoid the compile error “End if without block If”.
‘ Fix an roi in common roi = 8 ‘Change the value for non-senior citizens alone using the rule 1If custage < 60 Then roi = 6’ comment or remove the end if statement to fix the error.’End If
According to Rule 1, if “End If” is used in the above code, you will encounter the error “End If without block If”. So, do not forget to remove it.
If you’re using nested if conditions are used, ensure that every “If” statement that has been opened, has a corresponding “End If” statement. This is in addition to Rule 1 above.
Example 1
If custage < 60 Then roi = 6 If strgen = “Female” And custage > 57 Then roi = 8 End If ‘********Line is explained below*********Else roi = 8End If
In this piece of code,
Example 2
If apple = “sweet” Then If mango = “sweet” Then Debug.Print “Fruits are sweet” End IfEnd If
Rule 3: Forgetting part of your deleted code
Ensure that there is no “End if” statement left behind without an “If” statement in your code. This might happen when you maintain code or change your logic after a long period of time.
For example, you might think that an “If – End if “ block of code might not be required in a certain place. And after you delete that “If block”, you may forget to delete its “End If” statement. This again causes the same compile error we keep seeing, “End if without block If”.
For Example:
If apple = “sweet” Then End IfEnd If
Imagine that you wanted to delete the inner If block in the above example. While doing so, you forgot to delete the “End If” statement. Then, you are sure to encounter the compile error “End If without block If”.
Here is a video that explains everything outlined above with sample code. The code is explained and executed line by line, so you can completely understand what causes the error “End if without block If”.
Re: End If without block If
I noticed that but that wasnt the question