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

B

Brett Smith

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
 
B

Brett Smith

Anybody have any thoughts as to why a simple comparision operator is not
working for me? Thanks!
 
J

JE McGimpsey

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
 
T

Tom Ogilvy

Try changing

NandMVariable = NVariable + MVariable

to

NandMVariable = NVariable & MVariable
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top