ايران ويج

نسخه‌ی کامل: تداخل برنامه با کد داخل Worksheet_Change
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
برنامه ای روی اکسل نوشته ام که با چند شیت کار می کند.
یکی از شیت ها ایونت 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
مساله اینه که هنوز متوجه نشدم به چه عملی گیر میکنه چون دیلیت یا پاک کردن خط ها رو دستی انجام میدم مشکلی پیش نمیاد. حتی وقتی با روش ماکروی خودکار اکسل خط ها رو در داخل برنامه پاک کردم باز هم خطا داد.