Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
excel UDF不';在板材中使用时不起作用_Excel_Excel Udf_Vba - Fatal编程技术网

excel UDF不';在板材中使用时不起作用

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

我创建了一个函数,该函数在通过工作簿中的子项激活时有效,但在工作表中尝试激活时有效(使用=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
    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