我有一个Worksheet_Change
事件,目前位于Sheet Module Level
。问题是我希望有时能够清除这张表。但是,当我清理我的工作表时,我得到一个溢出:
Private Sub Worksheet_Change(ByVal Target As Range)
'This is the line causing the problem because clearing the whole sheet causes the count to be massive
If Target.Count = 1 Then
If Target = Range("A4") Then
If InStr(LCase(Target.Value), "loaded") <> 0 Then
Range("A5").FormulaArray = "=My_Function(R[-1]C)"
End If
End If
End If
End Sub
我正在努力实现以下目标:
我按下一个按钮并清除了工作表(清除现有的数组公式数据),然后我将公式粘贴到工作表中并调用公式。该公式将数据返回到excel缓存,并将包含此公式(A4)的单元格更改为表示“已加载”的字符串。当我检测到值为“已加载”的单元格更改时,我会在下面的数组公式函数上的 Ctrl + Shift + Enter 上执行等效操作,显示数据。
答案 0 :(得分:0)
我相信你使用的是xl2007 +?
Target.Cells.Count
是Long
值,因此当您选择整个工作表时,.Count
太小而无法保存结果。
替换行
If Target.Count = 1 Then
与
If Target.Cells.CountLarge = 1 Then
您可能还希望看到this,因为您使用的是Worksheet_Change
修改强>:
另外两件事
<强> 1)强>
您也可以替换此行
If Target = Range("A4") Then
与
If Not Intersect(Target, Range("A4")) Is Nothing Then
<强> 2)强>
这一行
If InStr(LCase(Target.Value), "loaded") <> 0 Then
也可以写成
If InStr(1, Target.Value, "loaded", vbTextCompare) Then