Code Worksheet_Change không chạy khi ô Target là kết quả từ 1 ô khác

Liên hệ QC

hoanglocphat

Thành viên thường trực
Tham gia
27/1/13
Bài viết
258
Được thích
30
Các bạn giúp tôi trường hợp sau
Ở sheet1, nếu ô C1 (Target) có thay đổi giá trị gì thì sẽ chạy code HideSheet (ẩn sheet2)
Bây giờ tôi đặt liên kết giữa A1 và C1 bằng công thức VLOOKUP
Tôi muốn khi ô A1 là 1 hay 2 hoặc 3 thì ô C1 sẽ thay đổi giá trị và sẽ chạy code nhưng thực tế thì nó không chạy
Vậy trong trường hợp này thì làm sao chạy code Worksheet_Change khi tôi muốn dùng cách trung gian nói trên (dĩ nhiên trừ trường hợp chọn ô A1 là Target)
Cảm ơn các bạn,
 

File đính kèm

  • ThayDoiGiaTri.xlsm
    19.3 KB · Đọc: 10
Các bạn giúp tôi trường hợp sau
Ở sheet1, nếu ô C1 (Target) có thay đổi giá trị gì thì sẽ chạy code HideSheet (ẩn sheet2)
Bây giờ tôi đặt liên kết giữa A1 và C1 bằng công thức VLOOKUP
Tôi muốn khi ô A1 là 1 hay 2 hoặc 3 thì ô C1 sẽ thay đổi giá trị và sẽ chạy code nhưng thực tế thì nó không chạy
Vậy trong trường hợp này thì làm sao chạy code Worksheet_Change khi tôi muốn dùng cách trung gian nói trên (dĩ nhiên trừ trường hợp chọn ô A1 là Target)
Cảm ơn các bạn,
Bạn thay điều kiện là ô A1 thay vì C1
 
Upvote 0
Theo thớt nói thì đã làm rồi nhưng không thành công.
Tôi đoán là vấn đề này nó liên quan đến DisableEvents/EnableEvents.
Không phải anh, trong file bạn ấy bắt sự kiện Worksheet_Change nhưng kiểm tra địa chỉ ô thay đổi là C1 trong khi bạn muốn thay đổi giá trị của ô A1 mà muốn code nó vẫn chạy. Cụ thể code trong file.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$1" Then
       Call HideSheet
    End If
    If Target.Address = "$C$2" Then
       Call UnhideSheet
    End If
End Sub
 
Upvote 0
Không phải anh, trong file bạn ấy bắt sự kiện Worksheet_Change nhưng kiểm tra địa chỉ ô thay đổi là C1 trong khi bạn muốn thay đổi giá trị của ô A1 mà muốn code nó vẫn chạy. Cụ thể code trong file.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$C$1" Then
       Call HideSheet
    End If
    If Target.Address = "$C$2" Then
       Call UnhideSheet
    End If
End Sub
Theo tôi hiểu thì thớt muốn làm cái này:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
  Select Case Target.Address
     Case "$A$1"
       Select Case Target.Value
         Case 1, 2, 3
           Range("C1") = Not Range("C1") ' thay đổi ô này để trigger cái event của nó
        End Select
     Case "$C$1"
       HideSheet
     Case "$C$2
       UnhideSheet
  End Select
End Sub
 
Upvote 0
Bây giờ tôi đặt liên kết giữa A1 và C1 bằng công thức VLOOKUP
Tôi muốn khi ô A1 là 1 hay 2 hoặc 3 thì ô C1 sẽ thay đổi giá trị và sẽ chạy code nhưng thực tế thì nó không chạy
Không chạy là chuẩn rồi bạn. Dùng luôn A1 cho đơn giản, nhanh gọn.

1588177096316.png
 
Upvote 0
Mục đích của tôi là in hàng loạt các tài khoản kế toán như: 1111, 1121, 131, ...
Nên tôi đưa công thức liên kế để có thể in như lá 1,2,3 ...
Lúc đầu chưa nghỉ ra, nhưng bây giờ Lấy ô A1 là Target (chỉ phải sửa code cho phù hợp lại)
Cảm ơn các bạn đã hỗ trợ!
 
Upvote 0
Web KT

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

Back
Top Bottom