我已经在VBA中编写了一个用户定义的函数。我已经将该功能包括在Excel的VB编辑器的模块文件夹下。该函数打算通过比较该行其他单元格(例如C1,D1和E1)中存在的值,为每一行中的单元格(Excel工作表中的F列)计算一个值。该函数通过基于C列,D列和E列中存在的值的组合执行一组If条件(大约20个If条件)来计算F列的值。
当我将函数作为公式包含在F1单元格中时,书面函数将返回计算值(即= calculateValue())。该函数不使用任何输入参数。基于活动行,它计算值并返回。但是,当我双击F1单元格(调用用户定义的函数之后)时,我编写的autofill语句不会填充F列其他单元格的值。它将与F1中相同的值复制到F列的其他单元格中。似乎F列的其他单元格在调用该函数时并未考虑其各自的活动行。您能帮我纠正此功能吗?
Set targetRange = Range(StartRange, StartRange.Offset(0, -1).End(xlDown).Offset(0, 1))
Range("F1").AutoFill Destination:=targetRange
答案 0 :(得分:0)
如果您将C,D和E列中的值作为参数传递,而不是直接从UDF中读取它们,则您的UDF会更好。
=calculateValue(C1,D1,E1)
然后,您的UDF不需要知道活动的行是什么(当您以编程方式进行填充时,哪个BTW不会改变)