清除工作表中的所有单元格后,不要运行Sub Worksheet_Change(ByVal Target As Range)

时间:2018-05-08 11:29:01

标签: excel-vba vba excel

我有一个宏,我导入文本文件并使用宏更新此文件的某些元素,然后使用更新的元素重新创建文本文件。我正在验证特定工作表(USERSHEET)中的一些单元格,以确保用户条目正确并使用以下Sub:

    Option Explicit
Public Rec_Cnt As Integer
Private Sub Worksheet_Change(ByVal Target As Range)

Rec_Cnt = Sheets("MD").Cells(3, 7)
Dim Rng1 As Range
Dim Rng2 As Range
Dim Rng3 As Range

Set Rng1 = Range("E2:E" & Rec_Cnt)
Set Rng2 = Range("K2:K" & Rec_Cnt)
Set Rng3 = Range("Q2:Q" & Rec_Cnt)


If Not Application.Intersect(Target, Rng1) Is Nothing Then
If Len(Target) > 10 Then
   Call Original_Ticket_Error
Exit Sub
End If
ElseIf Not Application.Intersect(Target, Rng2) Is Nothing Then
If Len(Target) > 10 Then
   Call Original_Cnj_Ticket_Error
Exit Sub
End If
ElseIf Not Application.Intersect(Target, Rng3) Is Nothing Then
If Len(Target) > 10 Then
   Call Original_Ticket_Error
Exit Sub
End If
End If

End Sub

Sub Original_Ticket_Error()
MsgBox "Original Ticket Number is more 10 characters"
End Sub

Sub Original_Cnj_Ticket_Error()
MsgBox "Original Conj. Ticket Number is more 10 characters"
End Sub

=============================================== ================================ 使用更新的列创建文本文件后,我将清除USERSHEET中的所有单元格。 但是,我遇到类型不匹配的运行时错误“13”

我想检查一下工作表(USERSHEET)被清除后如何避免调用Private Sub Worksheet_Change(ByVal Target As Range)

非常感谢任何帮助。

谢谢, 萨钦

修改

用于清除用户表的代码:

Sub Clear_User_Sheet()
    Sheets("UserSheet").Select
    Range("A2:R100002").Select
    Application.Wait (Now + TimeValue("0:00:01"))
    Selection.Delete
    Application.EnableEvents = False
    Application.Wait (Now + TimeValue("0:00:01"))
    Selection.Delete
    Selection.Delete
    Sheets("Control Panel").Select
End Sub

1 个答案:

答案 0 :(得分:0)

请尝试使用此版本的Clear_User_Sheet

Sub Clear_User_Sheet()
    Application.EnableEvents = False
    Sheets("UserSheet").Range("A2:R100002").Delete
    Application.EnableEvents = True
End Sub

PS。如果您使用了已编辑答案中建议的代码,则可能会发现EnableEvents当前设置为False - 您需要在运行其他任何内容之前更正该代码。