我有一个简单的宏,它通过一系列工作表,根据输入的数据收集名称,然后将它们全部放入格式良好的 Word 文档中。我已经弄清楚了大部分,但是有一个错误让我很烦。它与根据姓名获取手机号码的代码有关。这是功能:
Function findCell(namePerson As String) As String
Dim splitName As Variant
Dim lastName As String
Dim firstName As String
splitName = Split(namePerson, " ")
lastName = splitName(UBound(splitName))
ReDim Preserve splitName(UBound(splitName) - 1)
firstName = Join(splitName)
For Each b In Worksheets("IT").Columns(1).Cells
If b.Value = lastName Then
If Sheets("IT").Cells(b.row, 2).Value = firstName Then findCell = Sheets("IT").Cells(b.row, 4).Value
End If
Next
End Function
手机号码在其名为“IT”的表格上。第一列是姓氏,第二列是名字,第四列是手机号码。有些人的名字有多个部分,这就是为什么你会看到一些奇怪的分裂、重新调整和重新组合在一起的原因。那部分工作得很好。
当您有多个姓氏相同的人时,就会出现问题。该函数将通过第一个 If 语句找到具有正确姓氏的人。然后它会比较名字。如果匹配,它将返回手机号码的值。之后,即使名字不匹配,for 循环也会停止。因此,如果有人碰巧有相同的姓氏,但没有检查名字,则它不会返回任何内容。
我已经尝试将返回调用放在循环之外,但它仍然没有任何区别。