Boolean Misread

G

Guest

If FtpFail = True Then
MsgBox "Order has been successfully Exported."
Else
MsgBox "Order has been saved but it has not been exported. Please check your
connection to the internet and try again."
End If

FtpFail is a global Public Variable Dimmed as a Boolean
The variable is read by an API call to write a file to an FTP server
Even if FtpFail = True (by stepping through the program and a msgbox and
debug message I always get true, and the file actually writes) it always
Displays the error message for False, regardless of what the value of FtpFail
actually is. am i doing something wrong?
 
D

Doug Glancy

ben,

It looks like your variable is misnamed. Shouldn't FtpFail be called
FtpSucceed? However, I don't think that's the problem. Maybe you should
try explicitly testing for False before Else:

If FtpSucceed = True Then
MsgBox "Order has been successfully Exported."
ElseIf FtpSucceed = False Then
MsgBox "Order has been saved but it has not been exported. Please
check your connection to the internet and try again."
Else
MsgBox "I don't know what's going on!!!"
End If

hth,

Doug
 
G

Guest

result = msgbox "I don't know what's going on!"
it didn't read as true or False
and btw I had a laugh about my misnamed variable
--
When you lose your mind, you free your life.
Ever Notice how we use '' for comments in our posts even if they aren''t
expected to go into the code?


Doug Glancy said:
ben,

It looks like your variable is misnamed. Shouldn't FtpFail be called
FtpSucceed? However, I don't think that's the problem. Maybe you should
try explicitly testing for False before Else:

If FtpSucceed = True Then
MsgBox "Order has been successfully Exported."
ElseIf FtpSucceed = False Then
MsgBox "Order has been saved but it has not been exported. Please
check your connection to the internet and try again."
Else
MsgBox "I don't know what's going on!!!"
End If

hth,

Doug
 
G

Guest

Hmm evidently The VBA Boolean Type and the value returned from the API call
weren't matching, by removin "As Boolean" in the Dim FtpFail Statement it
worked as intended.
--
When you lose your mind, you free your life.
Ever Notice how we use '' for comments in our posts even if they aren''t
expected to go into the code?


ben said:
result = msgbox "I don't know what's going on!"
it didn't read as true or False
and btw I had a laugh about my misnamed variable
 
G

Guest

Just a shot in the dark but.... I think VBA interprets True and False as -1
and 0 respectively where as your API call might be using 1 and 0. Perhaps you
could try typecasting the response from your API call:
FtpFail = CBool(ApiCall(ApiParams))
 
D

Doug Glancy

I don't know much about APIs but I think Charles is right about the
different interpretations of True and False between Excel and APIs.

If it was me, I'd try to find out what value the API returns for success and
failure and then declare a variable of that type (long?) and just test for
the 2 values.

hth,

Doug
 
T

Tom Ogilvy

Just to add, you could do


If FtpSucceed Then

Any non-zero value will be evaluated as True

Change the order of your if statement.


If FtpFail Then
MsgBox "Order has been saved but it has not been " & _
"exported. Please check your connection to the internet and try again."
Else
MsgBox "Order has been successfully Exported."
End If
 

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