Bỏ qua sự kiện Worksheet_Change khi xóa hoặc thêm dòng cột. (2 người xem)

Người dùng đang xem chủ đề này

zztantaibazz

Thành viên chính thức
Tham gia
19/8/13
Bài viết
96
Được thích
46
Nghề nghiệp
M&A Specialist - RM Assitant
Em có sử dụng Worksheet_Change nhưng khi xóa hoặc thêm dòng cột thì em thấy rất lâu.
Có cách nào để VBA biết bỏ qua sự kiện Worksheet change khi mình thêm dòng cột không vậy.
Thanks mọi người.
 
Em có sử dụng Worksheet_Change nhưng khi xóa hoặc thêm dòng cột thì em thấy rất lâu.
Có cách nào để VBA biết bỏ qua sự kiện Worksheet change khi mình thêm dòng cột không vậy.
Thanks mọi người.
Úp File lên mọi người coi cho ..Còn theo cách Mình Bói Thì Delete hết Code đi là Xong thôi Mà
 
Upvote 0
Thanks bạn. Mình đã tìm dc hướng giải quyết. Hiện tại online bằng điện thoại. Tối về sẽ up file.
 
Upvote 0
Trong sheet Allocation, em có dùng đoạn code VBA Worksheet_SelectionChange để bỏ qua Worksheet_Change chèn hay xóa dòng cột. hem biết vậy có đúng hem.

Mã:
Public oldAdress As StringPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
    oldAdress = Target.address
End Sub


Private Sub Worksheet_Change(ByVal Target As Range)
    If oldAdress <> "$A$1" And oldAdress <> "$B$1" Then Exit Sub
    Dim i As Integer, colFilter As Integer, aRange As String
    If Application.Intersect(Target, Range("A1:B1")) Is Nothing Then Exit Sub
    Select Case Target.address
        Case "$A$1"
            i = WorksheetFunction.Match(Target.Value, Sheets("Control").Range("SettingFilter[Type]"), 0)
            aRange = WorksheetFunction.Index(Sheets("Control").Range("SettingFilter[NameTable]"), i, 1)
            Range("B1").ClearContents
            Call SetUpValidation(aRange)
        oldAdress = "$A$1"
        Case "$B$1"
        If Range("B1").Value <> "" Then
            colFilter = WorksheetFunction.Match(Range("A1").Value, Range("2:2"), 0)
            ActiveSheet.ListObjects("TableAllocation").Range.AutoFilter Field:=colFilter, _
            Criteria1:=Target.Value
            Call optSortByName
         oldAdress = "$B$1"
        End If
    End Select
End Sub
 

File đính kèm

Upvote 0
Nếu vì chèn dòng cột thì đơn giản hơn nhiều là dùng:

If Application.Intersect(Target, Range("A1:B1")) Is Nothing Or Target.Cells.Count>1 Then Exit Sub
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom