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

时间:2015-11-27 12:52:07

标签: excel vba excel-vba

使用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"

创建85个循环是一个漫长的过程,并且在一个不断变化的工作场所太冗长。

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

1 个答案:

答案 0 :(得分:0)

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

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