?
Solved

About String

Posted on 2002-03-06
6
Medium Priority
?
191 Views
Last Modified: 2010-05-02
I have one TextBox where i will put a person's name(e.g. Michael A. Surname). Then i have 3 Command Buttons and 3 TextBox. In the first TextBox, when I click the first CommandButton the FirstName(e.g. Michael) should be in the first TextBox. And in the second, the MiddleInitial, and in the third the Surname.

Should I use (Len(), InStr(),etc..) in doing that.
Show me the code if this posible.
0
Comment
Question by:codebreaker
[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
  • Learn & ask questions
6 Comments
 
LVL 53

Expert Comment

by:Ryan Chong
ID: 6843994
Dim myArray() As String
MyName = "Michael A. Surname"
myArray = Split(myName," ")

For i = Lbound(myArray) To Ubound(myArray)
   Debug.Print myArray(i)
Next i
0
 
LVL 53

Expert Comment

by:Ryan Chong
ID: 6843997
If this is needed:

Private Sub Command1_Click() 'First Name
    Text1.Text = myArray(0)
End Sub

Private Sub Command1_Click() 'Middle Name
    Text2.Text = myArray(1)
End Sub

Private Sub Command1_Click() 'Last Name
    Text3.Text = myArray(2)
End Sub
0
 

Accepted Solution

by:
GMorgan earned 200 total points
ID: 6844043
Dim iLength As Integer
Dim iIndex As Integer
Dim strWholeName As String
Dim strFirstName As String
Dim strInitial As String
Dim strLastName As String
Dim strTest As String

' store whole name
strWholeName = txtWholeName.Text

' find the length of the string
iLength = Len(strWholeName)

iIndex = 1
' loop until we know the length of firstname
Do Until strTest = " "
    strTest = Mid(strWholeName, iIndex, 1)
   
    iIndex = iIndex + 1
Loop

' extracted first name

strFirstName = Mid(strWholeName, 1, iIndex - 2)

txtFName = strFirstName
     
 ' extract initial
strInitial = Mid(strWholeName, iIndex, 2)
txtMiddleInit = strInitial

' extract last name
strLastName = Mid(strWholeName, iIndex + 3, iLength - iIndex - 2)
txtLName = strLastName
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
LVL 17

Expert Comment

by:Suat Ozgur
ID: 6844094
for MiddleInitial you should better use this code line after setting myarray by Split function

myarray(1)=Left(myarray(1),1)


If you have no VB6 then you cannot use that great functions of VB like Split and Replace then you can use this code or some else.

Code needs 3 command1 buttons (control arrays) and 3 text1 textboxes (control arrays), Text2 textbox (entry textbox for full name) and then paste this code in form module.

Private Function GetVal(Index As Integer, fullname As String) As String
Dim i As Integer, j As Integer
fullname = Trim(fullname) & " "
  For i = 0 To Index
    fullname = LTrim(Right(fullname, Len(fullname) - j))
    j = InStr(1, fullname, " ")
  Next i
  If j = 0 Then Exit Function
  GetVal = IIf(Index = 1, Left(Left(fullname, j - 1), 1), Left(fullname, j - 1))
End Function


Private Sub Command1_Click(Index As Integer)
  Text1(Index).Text = GetVal(Index, Text2.Text)
End Sub

regards
suat
0
 
LVL 1

Expert Comment

by:eosu
ID: 6844811
problem you are going to face will be people who put in Jnr or have 2 first names, which as far as I can see will not be handled by above...

What I would do is read to the first space in the string to get the firstname...
iFirstEnd = instr(1 strFullName, " ")
strFirstName = mid(strFullName, 1, iFirstEnd - 1)

Then read from the end of the string for the surname...
iSurStart = instrrev(strFullName, " ")
strSurname = mid(strFullName, iSurStart+1)

strMiddle = mid(strfullname, iFirstEnd+1, iSurStart-iFirstEnd)


you will probably have to fool around with the +1 and -1 above as it will probably be pulling back a space in some cases and dropping a char in others and I haven't compiled it.  But you should get the idea anyway...

eosu
0
 
LVL 5

Expert Comment

by:kcm76
ID: 6853278
hi Codebreaker,
the following code will work for names of type u have specified in the question.(Michael A. Surname). This does not Advanced String functions like Instr or Split.
I have just used Mid and Len function, which i hope, do work for previous versions of visual basic too. I have called the Procedure in the Form load event, but it should have been called in lost_Focus of the userInput text box.

All the best
KCM
************************
Dim strName As String
Dim strArray(2) As String
Private Sub Command1_Click()
Text1.Text = strArray(0)
End Sub

Private Sub Command2_Click()
Text2.Text = strArray(1)
End Sub

Private Sub Command3_Click()
Text3.Text = strArray(2)
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = "Michael A. Surname"
SplitRecord
End Sub

Sub SplitRecord()
Dim strTemp As String, intCtr As Integer
intCtr = 0
strTemp = ""
For i = 1 To Len(Text4)
    If Mid(Text4.Text, i, 1) = " " Then
        strArray(intCtr) = strTemp
        strTemp = ""
        intCtr = intCtr + 1
        If intCtr > 1 Then
            strArray(intCtr) = Mid(Text4.Text, i + 1)
            Exit For
        End If
    Else
        strTemp = strTemp & Mid(Text4.Text, i, 1)
    End If
Next i
End Sub
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

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

You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Get people started with the utilization of class modules. Class modules can be a powerful tool in Microsoft Access. They allow you to create self-contained objects that encapsulate functionality. They can easily hide the complexity of a process from…
Suggested Courses
Course of the Month11 days, 9 hours left to enroll

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question