InStr function error driving me around the bend.

  • Thread starter Thread starter Guest
  • Start date Start date
G

Guest

I am quite puzzled by the error I when this function gets called:
Runtime error "13"
Type mismatch

The error is triggered by the InStr function

Public Function IsNoLimit(gn As String) As Boolean

Dim gnp As String

If InStr(gn, "No Limit", vbTextCompare) > 0 Then <<< offending line of
code
IsNoLimit = True
Else
IsNoLimit = False
End If

End Function

All I want it to do is tell me if the string "No Limit" was found; InStr >0
as in gn = " 5/10 No Limit Holdem" where InStr would be 6 or "Omaha8: Limit
6/12" where InStr should be 0 as "No Limit" was not found within the search
string gn.

The help files tell me that the return data type of the InStr function is
Varient (Long). I have tried using a variable to return the InStr function to
(such as gnnl) and dimmsioning the variable to Varient and Long. The error
has always been the same which is why you see the current code attempt above.
Same error.

Anyone out there have any ideas as to why I get this error and any solutions
to it?

Much thanks for reading this somewhat lengthly post,
Bart
 
Yes, that's confusing.

The issue is that all 4 arguments of Instr() are optional, and you must
include the first (the starting position) when you include the last (the
compare type.)

Try:
If InStr(1, gn, "No Limit", vbTextCompare) > 0 Then

Or perhaps just:
IsNoLimit = (InStr(1, gn, "No Limit", vbTextCompare) = 0)
 
DaBartman said:
I am quite puzzled by the error I when this function gets called:
Runtime error "13"
Type mismatch

The error is triggered by the InStr function

Public Function IsNoLimit(gn As String) As Boolean

Dim gnp As String

If InStr(gn, "No Limit", vbTextCompare) > 0 Then <<< offending line of
[...]

Try If InStr(1, gn, "No Limit", vbTextCompare) > 0 Then

If you use the compare option, you need to give the start argument.
This is perhaps one of the weirdest synatx rules in VB, so don't feel
bad :-)

HTH
Matthias Kläy
 
Problem solved by both of you. Thanks,
Bart

Matthias Klaey said:
DaBartman said:
I am quite puzzled by the error I when this function gets called:
Runtime error "13"
Type mismatch

The error is triggered by the InStr function

Public Function IsNoLimit(gn As String) As Boolean

Dim gnp As String

If InStr(gn, "No Limit", vbTextCompare) > 0 Then <<< offending line of
[...]

Try If InStr(1, gn, "No Limit", vbTextCompare) > 0 Then

If you use the compare option, you need to give the start argument.
This is perhaps one of the weirdest synatx rules in VB, so don't feel
bad :-)

HTH
Matthias Kläy
 
vbTextCompare is the default value in Access.

If InStr(gn,"No Limit")

This is what the line:
Option Compare Database
at the top of every module means.

(david)
 
Back
Top