Excel VBA范围方法无法从函数调用开始工作
我正在尝试开发一个自定义VBA函数来处理范围,即从列表中删除重复值,并将唯一值列表放置在工作表的特定列中。我使用自定义函数调用的原因是,我希望在原始列表中添加新条目时,可以随时更新“唯一值”列表 当我将代码作为子例程手动运行时(例如,仅运行下面的Excel VBA范围方法无法从函数调用开始工作,excel,vba,user-defined-functions,Excel,Vba,User Defined Functions,我正在尝试开发一个自定义VBA函数来处理范围,即从列表中删除重复值,并将唯一值列表放置在工作表的特定列中。我使用自定义函数调用的原因是,我希望在原始列表中添加新条目时,可以随时更新“唯一值”列表 当我将代码作为子例程手动运行时(例如,仅运行下面的子RemovedUpplicateValues()段),我可以使代码正常工作。但是,当通过工作簿从自定义函数调用它时(例如,通过在工作表单元格中输入=ManageLists()),在尝试使用其中一种范围方法的第一个实例中,即在NewList.Value2
子RemovedUpplicateValues()
段),我可以使代码正常工作。但是,当通过工作簿从自定义函数调用它时(例如,通过在工作表单元格中输入=ManageLists()
),在尝试使用其中一种范围方法的第一个实例中,即在NewList.Value2=OriginalList.Value2
行,代码将不做任何操作而退出
函数ManageLists()为双精度
调用RemovedUpplicateValues
端函数
子RemovedUpplicateValues()
暗淡原始列表,新列表为范围
设置原始列表=工作表(“应用程序4输入”)。范围(“A4:A503”)
Set NewList=工作表(“放牧组粪便计算器”)。范围(“CG4:CG503”)
NewList.Value2=OriginalList.Value2
NewList.RemoveDuplicates列:=数组(1)
端接头
您不能以这种方式使用自定义项。摘自优秀网站:
用户定义函数(或UDF)是一个函数过程,通常(但不一定)接受一些输入并返回结果。UDF只能向调用它的单元格返回一个值——它不能修改任何单元格的内容或格式,也不能修改Excel的操作环境。如果试图更改任何内容,函数将立即终止,并向调用单元格返回#VALUE错误
似乎每次工作表上的值发生变化时,您都希望执行函数,因此您应该使用
App 4 Input
工作表的事件:
Private Sub Worksheet_Change(ByVal Target As Range)
'if a value in column 1 (A:A) changes
If Target.Column = 1 Then
Call RemoveDuplicateValues
End If
End Sub
你不能以那种方式使用UDF。摘自优秀网站: 用户定义函数(或UDF)是一个函数过程,通常(但不一定)接受一些输入并返回结果。UDF只能向调用它的单元格返回一个值——它不能修改任何单元格的内容或格式,也不能修改Excel的操作环境。如果试图更改任何内容,函数将立即终止,并向调用单元格返回#VALUE错误
似乎每次工作表上的值发生变化时,您都希望执行函数,因此您应该使用
App 4 Input
工作表的事件:
Private Sub Worksheet_Change(ByVal Target As Range)
'if a value in column 1 (A:A) changes
If Target.Column = 1 Then
Call RemoveDuplicateValues
End If
End Sub
你的代码似乎适合我,请检查你的工作表名称App 4输入和计算器,也许你做了一个typo@Dorian您是否如所述“在工作表单元格中输入=ManageLists()”?您的代码似乎对我有效。请检查您的工作表名称App 4输入和计算器可能您做了typo@Dorian是吗如前所述“在工作表单元格中输入=ManageLists()”?