برنامه ای روی اکسل نوشته ام که با چند شیت کار می کند.
یکی از شیت ها ایونت Worksheet_Change دارد.
وقتی برنامه اول اجرا می شود بدون اینکه ربطی داشته باشد وارد برنامه Worksheet_Change می شود و تداخل ایجاد کرده خطا می دهد.
چطور این اتفاق می افتد و چه کار باید کرد؟
وقتی برنامه به این خط می رسد
کد:
Range("Data").ClearContents
Sheet1.ListObjects("Data").DataBodyRange.Delete
وارد برنامه زیر در شیت یک می شود و روی عبارت آخرین شرط گیر می کند.
کد:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = Range("B3").Address Then
If Range("B3") = "" Then
Exit Sub
End If
ActiveSheet.ListObjects("Data").Range.AutoFilter Field:=1, Criteria1:=Range("B3")
Range("C3").Select
ElseIf Target.Address = Range("C3").Address Then
If Range("C3") = "" Then
Exit Sub
End If
ActiveSheet.ListObjects("Data").Range.AutoFilter Field:=2, Criteria1:=Range("C3")
Range("B3").Select
ElseIf Target.Address = Range("D3").Address Then
If Range("D3") = "" Then
Exit Sub
End If
ActiveSheet.ListObjects("Data").Range.AutoFilter Field:=3, Criteria1:=Range("D3")
Range("D3").Select
ElseIf Target.Column = Range("Data[ßÏ ßÇáÇ]").Column Then
If Selection.Count > 1 Then
If WorksheetFunction.CountIf(Sheet2.Range("List[ßÏ ßÇáÇ]"), ActiveCell) = 0 And ActiveCell <> "" Then
Target.ClearContents
MsgBox "Çíä ÔãÇÑå ËÈÊ äÔÏå ÇÓÊ"
End If
ElseIf Selection.Count = 1 Then
If WorksheetFunction.CountIf(Sheet2.Range("List[ßÏ ßÇáÇ]"), Target) = 0 And Target <> "" Then
Target.ClearContents
MsgBox "Çíä ÔãÇÑå ËÈÊ äÔÏå ÇÓÊ"
End If
End If
End If
End Sub