Excel UDF引用已关闭工作簿中的表进行查找

时间:2018-04-19 11:40:46

标签: vba excel-vba user-defined-functions excel

我有一个可用的UDF,它根据所选单元格的第一个字母分配用户名。字母和用户名列表内置于VBA中的功能中,因此更新很繁琐,因此我正在寻找替代方案。

我在工作簿中创建了一个表,可以让任何人更轻松地更新作业。我已经做了一些努力但是我无法通过查找表来让UDF正确地分配用户名。下面有一次尝试,要么我离开了标记,要么就是无法完成。想法?

Function Test(Optional Cell As String) As String
Dim Name As Variant, Alpha As Variant, ATable As Variant
Dim i As Integer

If UCase(Left(Cell, 1)) = "A" Then
    Alpha = UCase(Left(Cell, 2))
Else: Alpha = UCase(Left(Cell, 1))
End If

ATable = Workbook("C:\filepath\").Worksheets("sheet1").ListObjects("ALPHA").DataBodyRange.Value

For i = LBound(ATable) To UBound(ATable)
    If ATable(i, 1) = Alpha Then
        Name = ATable(i, 2)
    End If
Next i

Test = Name

End Function

UDF旨在用于任何打开的工作簿,并且表工作簿将被关闭。

1 个答案:

答案 0 :(得分:2)

  1. 要从已关闭的工作簿中获取数据,您必须打开它 - Pulling data from a closed workbook macro

  2. UDF无法打开工作簿。 Description of limitations of custom functions in Excel.