ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Clarification please... (https://www.excelbanter.com/excel-programming/296158-clarification-please.html)

JMay

Clarification please...
 
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub



Arvi Laanemets

Clarification please...
 
Hi

If has 2 possible syntaxes. From MS Visual Basic Help:
If condition Then [statements] [Else elsestatements]

Or, you can use the block form syntax:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

In your example the single-line form is used. You probably got confused
because the command line was splitted.
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True

is same as
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True Then Cancel =
True


--
Arvi Laanemets
(Don't use my reply address - it's spam-trap)



"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub





Tushar Mehta

Clarification please...
 
You have already received the explanation vis-a-vis the If part. An
additional tidbit is that the If is totally unnecessary.

Cancel = ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True

or

Cancel = Not ThisWorkbook.Sheets("Sheet1").Range("A1").Value

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article <nEric.16454$VQ3.11320@lakeread06, says...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub




JMay

Clarification please...
 
Arvi:
Thanks for response. So there are two forms of "If";

1) The Single-line form - If True then Statement <<<< Not requiring
"End If"
2) The Block form - If True then Statement, ElseIf, Else, EndIf
<<<<Requiring "EndIf"

The second forms appears plentifully in Code compared to the first. Is
there a "rule"
which directs you to apply #1 versus #2?

TIA,

"Arvi Laanemets" wrote in message
...
Hi

If has 2 possible syntaxes. From MS Visual Basic Help:
If condition Then [statements] [Else elsestatements]

Or, you can use the block form syntax:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

In your example the single-line form is used. You probably got confused
because the command line was splitted.
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True

is same as
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True Then Cancel =
True


--
Arvi Laanemets
(Don't use my reply address - it's spam-trap)



"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub







Dave Peterson[_3_]

Clarification please...
 
There are two styles of if statements.

One logical line and multiple logical lines (block form).

your example is really one logical line--it has the line continuation characters
(space underscore) trailing the True.

if a = b then c = d

if a = b then
c = d
end if

My personal preference is to use the multiple line version--except on almost
trivial code where it's easily seen.

But at my age, I'll sometimes miss those continuation characters and I get
confused.

Next time you're in the VBE, highlight an If and hit F1. You'll see a couple
examples.



JMay wrote:

I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub


--

Dave Peterson


JMay

Clarification please...
 
OK - I see it (Tks Dave)...
If you can get the logical statement "ON ONE LINE" the EndIf is not
required.
If you take it two lines or more EndIf is required.
Is that it?????
Sorry for my denseness, but until I confront it - (the denseness) never goes
away LOL
TIA

"JMay" wrote in message
news:Yasic.16745$VQ3.7640@lakeread06...
Arvi:
Thanks for response. So there are two forms of "If";

1) The Single-line form - If True then Statement <<<< Not requiring
"End If"
2) The Block form - If True then Statement, ElseIf, Else, EndIf
<<<<Requiring "EndIf"

The second forms appears plentifully in Code compared to the first. Is
there a "rule"
which directs you to apply #1 versus #2?

TIA,

"Arvi Laanemets" wrote in message
...
Hi

If has 2 possible syntaxes. From MS Visual Basic Help:
If condition Then [statements] [Else elsestatements]

Or, you can use the block form syntax:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

In your example the single-line form is used. You probably got confused
because the command line was splitted.
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True

is same as
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True Then Cancel =
True


--
Arvi Laanemets
(Don't use my reply address - it's spam-trap)



"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub









Dave Peterson[_3_]

Clarification please...
 
You are correct, sir.

(Ed McMahon voice.)

JMay wrote:

OK - I see it (Tks Dave)...
If you can get the logical statement "ON ONE LINE" the EndIf is not
required.
If you take it two lines or more EndIf is required.
Is that it?????
Sorry for my denseness, but until I confront it - (the denseness) never goes
away LOL
TIA

"JMay" wrote in message
news:Yasic.16745$VQ3.7640@lakeread06...
Arvi:
Thanks for response. So there are two forms of "If";

1) The Single-line form - If True then Statement <<<< Not requiring
"End If"
2) The Block form - If True then Statement, ElseIf, Else, EndIf
<<<<Requiring "EndIf"

The second forms appears plentifully in Code compared to the first. Is
there a "rule"
which directs you to apply #1 versus #2?

TIA,

"Arvi Laanemets" wrote in message
...
Hi

If has 2 possible syntaxes. From MS Visual Basic Help:
If condition Then [statements] [Else elsestatements]

Or, you can use the block form syntax:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

In your example the single-line form is used. You probably got confused
because the command line was splitted.
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True

is same as
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True Then Cancel =
True


--
Arvi Laanemets
(Don't use my reply address - it's spam-trap)



"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub







--

Dave Peterson


Paulw2k

Clarification please...
 
Not necessary for one-liners : if this then dothat

However,

if this then
dothat1
dothat2....
end if


Paul

"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub





Tushar Mehta

Clarification please...
 
In most of my programming, I tend to think of intent rather than lines
of code. So, if the IF statement has a single intent in the THEN and
the ELSE parts, I use a single line form even if it takes multiple
lines of code. An example:

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article <_osic.16879$VQ3.8983@lakeread06, says...
OK - I see it (Tks Dave)...
If you can get the logical statement "ON ONE LINE" the EndIf is not
required.
If you take it two lines or more EndIf is required.
Is that it?????
Sorry for my denseness, but until I confront it - (the denseness) never goes
away LOL
TIA

"JMay" wrote in message
news:Yasic.16745$VQ3.7640@lakeread06...
Arvi:
Thanks for response. So there are two forms of "If";

1) The Single-line form - If True then Statement <<<< Not requiring
"End If"
2) The Block form - If True then Statement, ElseIf, Else, EndIf
<<<<Requiring "EndIf"

The second forms appears plentifully in Code compared to the first. Is
there a "rule"
which directs you to apply #1 versus #2?

TIA,

"Arvi Laanemets" wrote in message
...
Hi

If has 2 possible syntaxes. From MS Visual Basic Help:
If condition Then [statements] [Else elsestatements]

Or, you can use the block form syntax:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

In your example the single-line form is used. You probably got confused
because the command line was splitted.
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True

is same as
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True Then Cancel =
True


--
Arvi Laanemets
(Don't use my reply address - it's spam-trap)



"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub










Tushar Mehta

Clarification please...
 
In my programming endeavors I tend to think in terms of intent (where
the code simply reflects the developer's intent). So, if there is a
single intent in the IF/THEN/ELSE parts, I use the single-line form,
even if I then use multiple lines for ease-of-reading. It makes the
*intent* clearer to whoever might be reading the code at a later date.
And, the intent itself might include multiple VBA statements!

Dim x As Integer, y As Integer, z As Boolean
z = Application.InputBox("z?", Type:=4)
If z Then _
x = 0: y = 0 _
Else _
x = 99: y = 99
MsgBox x & "," & y

Of course, all this is moot since VB.Net does not support the single-
line form of the IF.

--
Regards,

Tushar Mehta
www.tushar-mehta.com
Excel, PowerPoint, and VBA add-ins, tutorials
Custom MS Office productivity solutions

In article <_osic.16879$VQ3.8983@lakeread06, says...
OK - I see it (Tks Dave)...
If you can get the logical statement "ON ONE LINE" the EndIf is not
required.
If you take it two lines or more EndIf is required.
Is that it?????
Sorry for my denseness, but until I confront it - (the denseness) never goes
away LOL
TIA

"JMay" wrote in message
news:Yasic.16745$VQ3.7640@lakeread06...
Arvi:
Thanks for response. So there are two forms of "If";

1) The Single-line form - If True then Statement <<<< Not requiring
"End If"
2) The Block form - If True then Statement, ElseIf, Else, EndIf
<<<<Requiring "EndIf"

The second forms appears plentifully in Code compared to the first. Is
there a "rule"
which directs you to apply #1 versus #2?

TIA,

"Arvi Laanemets" wrote in message
...
Hi

If has 2 possible syntaxes. From MS Visual Basic Help:
If condition Then [statements] [Else elsestatements]

Or, you can use the block form syntax:

If condition Then
[statements]

[ElseIf condition-n Then
[elseifstatements] ...

[Else
[elsestatements]]

End If

In your example the single-line form is used. You probably got confused
because the command line was splitted.
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True

is same as
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True Then Cancel =
True


--
Arvi Laanemets
(Don't use my reply address - it's spam-trap)



"JMay" wrote in message
news:nEric.16454$VQ3.11320@lakeread06...
I thought there was this rule where if you use the "If" keyword
somewhere afterwards one had to follow-up with the "End If" phrase.
Obviously not. Maybe the rule only applies in a Standard module
and not a class module like below. Can someone clarify?
Thanks in advance..


Private Sub Workbook_BeforeClose(Cancel As Boolean)
If ThisWorkbook.Sheets("Sheet1").Range("A1").Value < True _
Then Cancel = True
End Sub











All times are GMT +1. The time now is 06:25 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com