Vba 搜索Word文件中的文本列并显示相邻单元格

Vba 搜索Word文件中的文本列并显示相邻单元格,vba,excel,Vba,Excel,在工作中使用VBA,我已经有了分析Word文件、选择其所需方面并将其转换为Excel格式的代码 我们将任务分配给Word文件中的人员,文件和代码的设置方式可以识别负责任务的人员,例如,Joe。我们有很多员工,我希望能够让脚本在一列中搜索从列表中选择的任何名称,找到名称所在的单元格,然后在与其直接相邻的单元格中显示数据 目前,代码中有许多人手动放置在循环中,即如果Joe出现,则显示usernameJoe 我将用户名和名称拆分在工作簿的一个表中,结构如下: Name Username

在工作中使用VBA,我已经有了分析Word文件、选择其所需方面并将其转换为Excel格式的代码

我们将任务分配给Word文件中的人员,文件和代码的设置方式可以识别负责任务的人员,例如,
Joe
。我们有很多员工,我希望能够让脚本在一列中搜索从列表中选择的任何名称,找到名称所在的单元格,然后在与其直接相邻的单元格中显示数据

目前,代码中有许多人手动放置在循环中,即如果
Joe
出现,则显示
usernameJoe

我将用户名和名称拆分在工作簿的一个表中,结构如下:

Name        Username
Joe A       ajoe
Jack B      bjack 
John C      cjohn
...              ...
当我的代码单独放置在循环中时可以工作:

Joe responsible?
            If InStr(current_action.resp, "Joe") <> 0 Then


                ' assigning to online account
                current_action.resp = "ajoe"
乔有责任吗? 如果InStr(当前动作响应,“Joe”)为0,则 '分配到在线帐户 当前_action.resp=“ajoe” 创建85个循环是一个很长的过程,而且在一个经常变化的工作场所中太冗长了


选择的名称在代码中称为
current_action.resp

您应该在其上使用数组和循环:

Sub test_Mugiwara_Luffy()

Dim PersonS(), _
    i As Long, _
    NameS() As String

ReDim PersonS(1 To 85, 1 To 2)

PersonS(1, 1) = "Joe A"
PersonS(2, 1) = "Jack B"
PersonS(3, 1) = "John C"
'....

For i = LBound(PersonS, 1) To UBound(PersonS, 1)
    If Len(PersonS(i, 1)) >= 5 And InStr(1, PersonS(i, 1), " ") Then
        NameS = Split(PersonS(i, 1), " ")
        PersonS(i, 2) = LCase(Left(NameS(UBound(NameS)), 1) & NameS(LBound(NameS)))
    Else
    End If
    If InStr(current_action.resp, PersonS(i, 1)) Then
        ' assigning to online account
        current_action.resp = PersonS(i, 2)
    Else
    End If
Next i

End Sub

应在其上使用数组和循环:

Sub test_Mugiwara_Luffy()

Dim PersonS(), _
    i As Long, _
    NameS() As String

ReDim PersonS(1 To 85, 1 To 2)

PersonS(1, 1) = "Joe A"
PersonS(2, 1) = "Jack B"
PersonS(3, 1) = "John C"
'....

For i = LBound(PersonS, 1) To UBound(PersonS, 1)
    If Len(PersonS(i, 1)) >= 5 And InStr(1, PersonS(i, 1), " ") Then
        NameS = Split(PersonS(i, 1), " ")
        PersonS(i, 2) = LCase(Left(NameS(UBound(NameS)), 1) & NameS(LBound(NameS)))
    Else
    End If
    If InStr(current_action.resp, PersonS(i, 1)) Then
        ' assigning to online account
        current_action.resp = PersonS(i, 2)
    Else
    End If
Next i

End Sub

谢谢你,这真是一种享受!我正想这么做!Thanks@mugiwara很高兴我能帮忙!花一分钟参观一下,看看如何接受答案和使用投票:谢谢,这真是一次享受!我正想这么做!Thanks@mugiwara很高兴我能帮忙!花一分钟参观,了解如何接受答案和使用投票: