ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   I'm trying to do a comparison if statement but it is not working!! (https://www.excelbanter.com/excel-programming/354602-im-trying-do-comparison-if-statement-but-not-working.html)

Brett Smith[_2_] February 28th 06 05:16 PM

I'm trying to do a comparison if statement but it is not working!!
 
I'm trying to do a comparison operator that is being printed on an export
text file. What I am trying to do is this. See below:

1) If columns N and M in the worksheet have data, then I want them both
stored into a string variable and then it is to be exported onto a text file.
2) If column N has data and column M is null, then only N is to be stored
into a text string variable and then it is to be exported onto a text file.
3) If column M has data and column N is null, then only column M is to be
stored into a text string variable and then it is to be exported onto a text
file.
4) If columns N and M are null, then nothing is to be stored into the text
string and the line will be skipped on the text file that is to be exported
from Excel.

Everything works fine and the text file displays both of the fields properly
when they both have data, but if one of the columns is blank, then nothing
shows up on the text file. Why is this happening? Below is my logic for the
code, please see below.



If IsEmpty(Cells(I, "N").Value) Or Cells(I, "N").Value = "" Then
NVariable = ""
Else: NVariable = Cells(I, "N").Value
End If

If IsEmpty(Cells(I, "M").Value) Or Cells(I, "M").Value = "" Then
MVariable = ""
Else: MVariable = Cells(I, "M").Value
End If



NandMVariable = NVariable + MVariable

If IsEmpty(NandMVariable) Or NandMVariable = "" Then
NANDMVARSTRING = ""
ElseIf (NVariable = "" And MVariable < "") Then
NANDMVARSTRING = "$DATUM " & MVariable & vbCrLf
ElseIf (MVariable = "" And NVariable < "") Then
NANDMVARSTRING = "$DATUM " & NVariable & vbCrLf
ElseIf NandMVariable < "" Then
NANDMVARSTRING = "$DATUM " & NVariable & "_" & MVariable &
vbCrLf
End If

Brett Smith[_2_] February 28th 06 06:01 PM

I'm trying to do a comparison if statement but it is not working!!
 
Anybody have any thoughts as to why a simple comparision operator is not
working for me? Thanks!

"Brett Smith" wrote:

I'm trying to do a comparison operator that is being printed on an export
text file. What I am trying to do is this. See below:

1) If columns N and M in the worksheet have data, then I want them both
stored into a string variable and then it is to be exported onto a text file.
2) If column N has data and column M is null, then only N is to be stored
into a text string variable and then it is to be exported onto a text file.
3) If column M has data and column N is null, then only column M is to be
stored into a text string variable and then it is to be exported onto a text
file.
4) If columns N and M are null, then nothing is to be stored into the text
string and the line will be skipped on the text file that is to be exported
from Excel.

Everything works fine and the text file displays both of the fields properly
when they both have data, but if one of the columns is blank, then nothing
shows up on the text file. Why is this happening? Below is my logic for the
code, please see below.



If IsEmpty(Cells(I, "N").Value) Or Cells(I, "N").Value = "" Then
NVariable = ""
Else: NVariable = Cells(I, "N").Value
End If

If IsEmpty(Cells(I, "M").Value) Or Cells(I, "M").Value = "" Then
MVariable = ""
Else: MVariable = Cells(I, "M").Value
End If



NandMVariable = NVariable + MVariable

If IsEmpty(NandMVariable) Or NandMVariable = "" Then
NANDMVARSTRING = ""
ElseIf (NVariable = "" And MVariable < "") Then
NANDMVARSTRING = "$DATUM " & MVariable & vbCrLf
ElseIf (MVariable = "" And NVariable < "") Then
NANDMVARSTRING = "$DATUM " & NVariable & vbCrLf
ElseIf NandMVariable < "" Then
NANDMVARSTRING = "$DATUM " & NVariable & "_" & MVariable &
vbCrLf
End If


JE McGimpsey February 28th 06 06:21 PM

I'm trying to do a comparison if statement but it is not working!!
 
First, since you make an assignment to NandMVariable, it should never be
empty, so

IsEmpty(NandMVariable)

should always return false.

Second, since you're using the + operator, but not getting a Type
mismatch error, I assume your data in N and M is text. If that's the
case, I'd recommend using the & operator.

The only way I got your results was to have numeric data in one cell,
the other cell blank (or text) and have an On Error Resume Next
statement operative. Since that ignores the type mismatch error, no
assignment will be made to NandMVariable so the first IsEmpty() will
return true, and NANDMVARSTRING will be the null string.

However, it appears to me that your routine could be substituted by
something like

NandMString = ""
With Cells(I, "M").Resize(1, 2)
If Len(.Item(1).Text) + Len(.Item(2).Text) Then
NandMString = "$DATUM " & .Item(1).Text & _
IIf(Len(.Item(1).Text) And Len(.Item(2).Text), "_", "") & _
.Item(2).Text & vbCrLf
End If
End With


In article ,
"Brett Smith" wrote:


Everything works fine and the text file displays both of the fields properly
when they both have data, but if one of the columns is blank, then nothing
shows up on the text file. Why is this happening? Below is my logic for the
code, please see below.


Tom Ogilvy February 28th 06 06:36 PM

I'm trying to do a comparison if statement but it is not working!!
 
Try changing

NandMVariable = NVariable + MVariable

to

NandMVariable = NVariable & MVariable

--
Regards,
Tom Ogilvy

"Brett Smith" wrote in message
...
I'm trying to do a comparison operator that is being printed on an export
text file. What I am trying to do is this. See below:

1) If columns N and M in the worksheet have data, then I want them both
stored into a string variable and then it is to be exported onto a text

file.
2) If column N has data and column M is null, then only N is to be stored
into a text string variable and then it is to be exported onto a text

file.
3) If column M has data and column N is null, then only column M is to be
stored into a text string variable and then it is to be exported onto a

text
file.
4) If columns N and M are null, then nothing is to be stored into the text
string and the line will be skipped on the text file that is to be

exported
from Excel.

Everything works fine and the text file displays both of the fields

properly
when they both have data, but if one of the columns is blank, then nothing
shows up on the text file. Why is this happening? Below is my logic for

the
code, please see below.



If IsEmpty(Cells(I, "N").Value) Or Cells(I, "N").Value = "" Then
NVariable = ""
Else: NVariable = Cells(I, "N").Value
End If

If IsEmpty(Cells(I, "M").Value) Or Cells(I, "M").Value = ""

Then
MVariable = ""
Else: MVariable = Cells(I, "M").Value
End If



NandMVariable = NVariable + MVariable

If IsEmpty(NandMVariable) Or NandMVariable = "" Then
NANDMVARSTRING = ""
ElseIf (NVariable = "" And MVariable < "") Then
NANDMVARSTRING = "$DATUM " & MVariable & vbCrLf
ElseIf (MVariable = "" And NVariable < "") Then
NANDMVARSTRING = "$DATUM " & NVariable & vbCrLf
ElseIf NandMVariable < "" Then
NANDMVARSTRING = "$DATUM " & NVariable & "_" & MVariable &
vbCrLf
End If




Brett Smith[_2_] February 28th 06 07:52 PM

I'm trying to do a comparison if statement but it is not worki
 
Thank you very much JE McGimpsey, you were very helpful!

"JE McGimpsey" wrote:

First, since you make an assignment to NandMVariable, it should never be
empty, so

IsEmpty(NandMVariable)

should always return false.

Second, since you're using the + operator, but not getting a Type
mismatch error, I assume your data in N and M is text. If that's the
case, I'd recommend using the & operator.

The only way I got your results was to have numeric data in one cell,
the other cell blank (or text) and have an On Error Resume Next
statement operative. Since that ignores the type mismatch error, no
assignment will be made to NandMVariable so the first IsEmpty() will
return true, and NANDMVARSTRING will be the null string.

However, it appears to me that your routine could be substituted by
something like

NandMString = ""
With Cells(I, "M").Resize(1, 2)
If Len(.Item(1).Text) + Len(.Item(2).Text) Then
NandMString = "$DATUM " & .Item(1).Text & _
IIf(Len(.Item(1).Text) And Len(.Item(2).Text), "_", "") & _
.Item(2).Text & vbCrLf
End If
End With


In article ,
"Brett Smith" wrote:


Everything works fine and the text file displays both of the fields properly
when they both have data, but if one of the columns is blank, then nothing
shows up on the text file. Why is this happening? Below is my logic for the
code, please see below.




All times are GMT +1. The time now is 01:46 AM.

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