Want to win a PS4? Go Premium and enter to win our High-Tech Treats giveaway. Enter to Win

x
Solved

# Access 2010 Function - problem with InStr function

Posted on 2014-04-30
Medium Priority
749 Views
Hi Experts,

I am trying to put 3 functions together (InStr, Left, Len) to do the following:

Take the value from a text field that contains text such as:  AAA-B-END, BB-C-END, D-K-END

And return the number of characters before the first hypen.  The examples above would equate to:  3 (AAA =3 characters), 2 (BB=2 characters) , 1 (D=1 character)

In the function I tried to build below, the first case works, but the second case always returns 4 when it should return the 3, 2, 1 examples above.  I believe the InStr portion of the function is reading as 0, but I can't figure out how to make it work to output the position of the character before the first "-" in the VPCode......

Dim BusDivNum As Double

Select Case VPCode

Case Is = "B-E-END"
BusDivNum = 2

Case Is = Len(Left(VPCode, (InStr(1, VPCode, "-", vbTextCompare) - 1))) = BusDivNum

Case Else
BusDivNum = 4
End Select

End Function
0
Question by:grmcra
[X]
###### Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

• Help others & share knowledge
• Earn cash & points
• 2
• 2

LVL 120

Expert Comment

ID: 40032765
is this "AAA-B-END, BB-C-END, D-K-END" the content of the textbox or

AAA-B-END
BB-C-END
D-K-END

you can simply use

Instr("AAA-B-END","-")-1
3

Instr("BB-C-END","-")-1
2

Instr("D-K-END","-")-1
1

End Function
0

Author Comment

ID: 40032832
Hi Rey,

The AAA-B-END, BB-C-END, D-K-END were just 3 examples of many different entries in the field.

I need to utilize Select Case as there will be exceptions I need to build in (i.e. the first case below "B-E-End" should not return 1, but should return 2)

I tried to utilize your Instr code to modify my function, but now it is returning all null values.  Maybe I am not using the Case select syntax correctly?

Option Compare Database

Dim BusDivNum As Double

Select Case VPCode

Case Is = "B-E-END"
BusDivNum = 2

Case Else
BusDivNum = InStr(VPCode, "-") - 1

End Select

End Function
0

LVL 120

Accepted Solution

Rey Obrero (Capricorn1) earned 2000 total points
ID: 40032934
test this

Dim BusDivNum As integer
Select Case VPCode

Case Is = "B-E-END"
BusDivNum = 2

Case Else
BusDivNum = InStr(VPCode, "-") - 1

End Select
End Function
0

Author Closing Comment

ID: 40032978
Awesome thanks : )
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It’s the first day of March, the weather is starting to warm up and the excitement of the upcoming St. Patrick’s Day holiday can be felt throughout the world.
Access developers frequently have requirements to interact with Excel (import from or output to) in their applications.  You might be able to accomplish this with the TransferSpreadsheet and OutputTo methods, but in this series of articles I will di…
Using Microsoft Access, learn some simple rules for how to construct tables in a relational database. Split up all multi-value fields into single values: Split up fields that belong to other things into separate tables: Make sure that all record…
This lesson discusses how to use a Mainform + Subforms in Microsoft Access to find and enter data for payments on orders. The sample data comes from a custom shop that builds and sells movable storage structures that are delivered to your property. …
###### Suggested Courses
Course of the Month9 days, 4 hours left to enroll