Excel VBA从用户定义的函数分配值到命名范围失败错误1004
我有一个模块的function。 该function定义如下:
Public Function CourseSetup(ByVal SROfferId As Integer) as string
当调用该函数时,以下行失败:
Worksheets("CourseEvaluation").Range("CourseName").value = "1234"
失败,错误1004。
子(macros)中的同一行起作用。 CourseName
是一个名为ranged的单元。 获得上述范围的价值。
在直接窗口中:
?Worksheets("CourseEvaluation").Range("CourseName").value
返回范围中的当前值。
从工作表中调用的函数不能操作input公式的活动单元格以外的工作表对象。
这保留了公式中的依赖关系,防止循环引用错误等
作为一般规则 ,使用子例程来操作对象,并使用公式来返回值(无论是单元格引用还是variables)。
一个例外是在子例程中调用的UDF 可以操作工作表对象,但这可能不是一个好习惯。 保持你的函数限于将值返回给variables/单元格,并使用子例程来操作对象。
进一步阅读:
使Excelfunction影响“其他”单元格
http://www.ozgrid.com/Excel/free-training/ExcelVBA1/excelvba1lesson21.htm
从单元中调用的用户定义的函数只能将值返回给它们被调用的单元。 所以你的UDF不允许将值写入一个定义的名字。