我有一个可用的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旨在用于任何打开的工作簿,并且表工作簿将被关闭。
答案 0 :(得分:2)
要从已关闭的工作簿中获取数据,您必须打开它 - Pulling data from a closed workbook macro
UDF
无法打开工作簿。 Description of limitations of custom functions in Excel.