![](/img/trans.png)
[英]Combining 2 “Private Sub Worksheet_Change(ByVal Target As Range)” into 1
[英]Don't run Sub Worksheet_Change(ByVal Target As Range) after all cells in the worksheet has been cleared
我有一个宏,在其中导入文本文件并使用该宏更新此文件的某些元素,然后使用更新的元素重新创建文本文件。 我正在验证特定工作表(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)
任何帮助深表感谢。
谢谢,sachin
编辑:
用于清除用户表的代码:
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
请尝试使用此版本的Clear_User_Sheet
:
Sub Clear_User_Sheet()
Application.EnableEvents = False
Sheets("UserSheet").Range("A2:R100002").Delete
Application.EnableEvents = True
End Sub
PS。 如果你使用的是你在编辑答案提出的代码,你可能会发现, EnableEvents
目前设定为False
-你要纠正运行之前别的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.