Ms access 在VBA Access中将全名字符串拆分为首字母、末字母和中间字母

Ms access 在VBA Access中将全名字符串拆分为首字母、末字母和中间字母,ms-access,vba,Ms Access,Vba,首先,我很抱歉,我对用VBA编写Access完全不熟悉,所以可能会有很多错误。但无论如何,我对名字和中间的首字母有点问题。目前,名称在[lastName,firstName middleInitial]中被格式化为字符串。我有3个文本框,分别标记为lastName firstName和middleInitial。下面的代码应该做的是将该字符串分成三个适当的框,但它挂起在名字上,不知道如何在空格处停下来,或者它截断了几个字符,而中间的首字母只有在有中间首字母时才起作用,但如果找不到,就会抛出错误。

首先,我很抱歉,我对用VBA编写Access完全不熟悉,所以可能会有很多错误。但无论如何,我对名字和中间的首字母有点问题。目前,名称在[lastName,firstName middleInitial]中被格式化为字符串。我有3个文本框,分别标记为lastName firstName和middleInitial。下面的代码应该做的是将该字符串分成三个适当的框,但它挂起在名字上,不知道如何在空格处停下来,或者它截断了几个字符,而中间的首字母只有在有中间首字母时才起作用,但如果找不到,就会抛出错误。我一直在绞尽脑汁想弄明白,因此我陷入了僵局,我在这里发问

多谢各位

Private Sub cbxMbr_AfterUpdate()

    If Not Me.opgMngRoster.Value = 1 Then
        'Member's Last Name
        Dim lastName As String
        lastName = Left(cbxMbr.Text, (InStr(1, cbxMbr.Text, ",") - 1))
        Me.txtLastName.Value = lastName

        'Member's First Name
        Dim firstName As String
        firstName = Mid(cbxMbr.Text, InStr(1, cbxMbr.Text, " "), (Len(cbxMbr.Text) - InStr(1, cbxMbr.Text, " ")))
        Me.txtFirstName.Value = firstName

        'Member's Middle Initial
        Dim midName As String
        midName = Mid(cbxMbr.Text, InStr(InStr(1, cbxMbr.Text, " ") + 1, cbxMbr.Text, " "))

        If midName = vbNullString Then
            Me.txtMidInit.Value = " "
        Else
            Me.txtMidInit.Value = midName
        'DoCmd.RunSQL "SELECT MEMBER ROSTER WHERE "
        End If
    End If

End Sub
您可以使用拆分:

您可以使用拆分:


真是太棒了!虽然因为我的组合框有两个列,一个是主键,它是隐藏的,它使用的是key列,我只是在row source下交换了列的顺序,所以第一列是名称,而不是键,它工作得很好。太棒了!虽然因为我的组合框有两个列,一个是主键,它是隐藏的,它使用的是key列,我只是在row source下交换了列的顺序,所以第一列是名称,而不是键,它工作得很好。
' "Duck, Donald D."
' "Duck, Donald"

Me!txtLastName.Value = Split(Me!cbxMbr.Value, ",")(0)
' Duck

Me!txtFirstName.Value = Split(Trim(Split(Me!cbxMbr.Value, ",")(1)), " ")(0)
' Donald

Me.txtMidtInit.Value = Split(Trim(Split(Me!cbxMbr.Value, ",")(1)) & " ", " ")(1)
 ' D. or zero-length string.