Boolean Misread

  • Thread starter Thread starter Guest
  • Start date Start date
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?
 
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
 
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
 
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
 
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))
 
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
 
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
 
Back
Top