基于ActiveCell设置同工作表单元格值:VBA函数报错求助
解决Excel VBA自定义函数修改单元格值的错误
你写的是自定义工作表函数(UDF),这类函数有个核心限制:只能返回计算结果到它所在的单元格,不能直接修改其他单元格的内容,这就是你遇到值错误的原因。
给你两种可行的解决办法:
方法一:改用宏过程(Sub)
如果需要主动修改其他单元格,用普通的宏更合适,代码调整如下:
Sub icalcs() Dim cellV As Long cellV = 2 + 2 ' 修改当前选中单元格同一行、左侧第2列的单元格 ActiveSheet.Cells(ActiveCell.Row, ActiveCell.Column - 2).Value = cellV End Sub
使用时先选中目标单元格,执行这个宏就能完成修改。注意要保证ActiveCell.Column - 2的结果是≥1的有效列号,否则会报错。
方法二:调整自定义函数的使用方式
如果坚持用函数,只能让它返回计算值,然后手动把函数放到需要修改的单元格里。修改后的函数代码:
Function icalcs(MainCell As Long) As Long Dim cellV As Long cellV = 2 + 2 icalcs = cellV End Function
比如你要修改B2单元格,就在B2里输入=icalcs(A2)(参数可以根据你的实际需求调整),函数会把计算结果返回给B2。
内容的提问来源于stack exchange,提问作者fardad
相关产品推荐
相关产品推荐

