Excel 使用VBA功能清洁电池
我想创建一个VBA函数,Excel 使用VBA功能清洁电池,excel,vba,Excel,Vba,我想创建一个VBA函数,myFunction(),,它将内容写入单元格,计算完成后,它将清除它写入的所有数据。(我想从带有=myFunction()的单元格中调用它)要清除内容,我将这一行放在末尾,以便在完成之前进行清理: ActiveSheet.Range("$A$1:$B$9").ClearContents 问题是,它不能清除任何内容。但是,我注意到,如果我将该行放在子例程的上面,然后将该子例程指定给按钮,那么当我单击该按钮时,内容将被清除 当我从程序“MicrosoftVisualBas
myFunction(),
,它将内容写入单元格,计算完成后,它将清除它写入的所有数据。(我想从带有=myFunction()
的单元格中调用它)要清除内容,我将这一行放在末尾,以便在完成之前进行清理:
ActiveSheet.Range("$A$1:$B$9").ClearContents
问题是,它不能清除任何内容。但是,我注意到,如果我将该行放在子例程的上面,然后将该子例程指定给按钮,那么当我单击该按钮时,内容将被清除
当我从程序“MicrosoftVisualBasic”的窗口(使用“播放”按钮)运行代码时,代码工作正常(内容被清除),但当我从单元格调用函数时,清理部分不再工作。
代码如下:
Function myFunction()
ActiveSheet.Range("$A$1:$B$9").Clear
End Function
当我在单元格中单击并键入=myFunction()
时,$a$1:$B$9范围内的内容不会被清除。
但是,如果我创建一个子例程(而不是函数),并用按钮调用它,则内容将被清除
为什么被myFunction()调用时它不能工作?如何解决此问题?您可以使用事件而不是UDF。请在任何工作表代码部分填写以下代码 上面的代码类似于一种变通方法。当excel界面更改范围(“A1:B9”)中的值时,将触发此事件 由工作表单元格中的公式调用的用户定义函数无法更改Microsoft Excel的环境。这意味着该函数不能执行以下任何操作:
- 在电子表格上插入、删除或格式化单元格
- 更改另一个单元格的值
- 将工作表移动、重命名、删除或添加到工作簿中
- 更改任何环境选项,例如计算模式或屏幕视图
- 向工作簿中添加名称
- 设置属性或执行大多数方法
@上述桑托什的回答应该可以解决问题。这是一个非常常见的问题。搜索Google:)使用ActiveSheet.Range($A$1:$B$9)。Clear@Santosh:不能从excel公式执行此操作/UDF@Santosh它不起作用。请看我的编辑2;p@user1493046你能粘贴MyFunction的代码吗?我粘贴了代码,但是我该怎么处理它呢?我需要它从一个单元格运行,但既然它是一个子程序,我想它不能?好吧,但我需要在某个地方调用它,不是吗?因为简单地粘贴它没有任何作用。@user1493046它是一个工作表_更改事件,当范围(“A1:B9”)中的值更改时,以及您可以在该更改事件中写入的任何逻辑时,会触发该事件。很遗憾,事件没有触发。谢谢你的帮助;p@user1493046我用截图更新了答案。我希望有帮助。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
If Not Intersect(Target, Range("$A$1:$B$9")) Is Nothing Then
' your code here
Range("$A$1:$B$9").Clear
End If
Application.EnableEvents = True
End Sub