检测纸张更换,清除纸张溢出

时间:2013-02-08 11:45:18

标签: excel vba excel-vba

我有一个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 上执行等效操作,显示数据。

1 个答案:

答案 0 :(得分:0)

我相信你使用的是xl2007 +?

Target.Cells.CountLong值,因此当您选择整个工作表时,.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