excel UDF不';在板材中使用时不起作用
我创建了一个函数,该函数在通过工作簿中的子项激活时有效,但在工作表中尝试激活时有效(使用=function\u name(参数)) 此函数正在调用生成错误的子函数excel UDF不';在板材中使用时不起作用,excel,excel-udf,vba,Excel,Excel Udf,Vba,我创建了一个函数,该函数在通过工作簿中的子项激活时有效,但在工作表中尝试激活时有效(使用=function\u name(参数)) 此函数正在调用生成错误的子函数 Sub SetTableValue(table_name As String, row_name As String, col_name As String, value As Variant, Optional ByVal sheet_name As Variant) On Error GoTo errline Di
Sub SetTableValue(table_name As String, row_name As String, col_name As String, value As Variant, Optional ByVal sheet_name As Variant)
On Error GoTo errline
Dim WS As Worksheet
Dim wb As Workbook
Dim tbl As ListObject
Set WS = Application.Caller.Worksheet.Parent.Worksheets(sheet_name)
Set tbl = WS.ListObjects(table_name)
Dim Rhead As Range
Set Rhead = tbl.HeaderRowRange
col_index = Application.WorksheetFunction.Match(col_name, Rhead, 0)
Dim Rcol As Range
Set Rcol = tbl.ListColumns(1).DataBodyRange
row_index = Application.WorksheetFunction.Match(row_name, Rcol, 0)
' here is the line where I get the error:
tbl.ListColumns(col_index).DataBodyRange.Rows(row_index) = value
Exit Sub
errline:
MsgBox "Error # " & Err & " : " & Error(Err)
Resume Next
End Sub
通过这个sun调用函数时,我得到了期望的结果:
Sub Calc()
Dim temp As Double
temp = InputBox("temp:")
calclkg temp:=temp
End Sub
直接从工作表调用函数时,我无法使用此行更新表单元格值(获取1004错误)
我试过各种方法,但都不管用。比如:
tbl.Range.Item(row_index + 1, col_index) = value
我做错了什么?自定义项不能以任何方式更改工作表的结构,例如复制单元格或更改字体;UDF可以调用其他函数和子例程,但它们受与UDF相同的约束
基本上,自定义项接受参数并将值返回到公式所在的单元格。您不能在单元格中使用自定义项将值分配给其他单元格。我想问一下,您试图做什么,您需要在那里使用自定义项?看起来你可能会从VLOOKUP中受益。
tbl.ListColumns(col_index).DataBodyRange.Rows(row_index) = value
tbl.Range.Item(row_index + 1, col_index) = value