使用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
。
答案 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