Ẩn hiện dòng trong excel bằng VBA

chung nguyen

Yêu THVBA
Kính chào các anh/chị. các bạn.
Em có 1 bảng tính excel cần ẩnh hoặc hiện 1 vài dòng theo điều kiện định sẵn, em dùng VBA đã giải quyết được vấn đề, tuy nhiên lại xảy ra 1 việc là khi có mã VBA đó thì mỗi khi em tích vào 1 ô bất kỳ trong bảng tính thì con trỏ chuột sẽ xoay vòng 1 thời gian ngắn rất khó chịu, xoá đoạn code đó đi thì lại không sao. Không biết anh chị nào trong group đã bị lỗi này chưa và cách khắc phục như nào ạ.Em xin cảm ơn!
 
V

vothanhthu

Guest
Nguyên nhân: Do bạn lập sự kiện Worksheet_SelectionChange nên mỗi lần nhấn một ô bất kể có thay đổi value ô đó không là chạy code > chậm file (hiện tượng là mỗi lần click mỗi lần chuột xoay)
Giải quyết: Sửa sự kiện lại thành Worksheet_Change
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
và thêm code này vào đầu để chỉ chạy code khi thay đổi giá trị tại ô I39:J39 ==> Sẽ thấy khác biệt
Mã:
If Not Application.Intersect(Range("I39:J39"), Range(Target.Address)) Is Nothing Then
 
Sửa lần cuối bởi điều hành viên:

chung nguyen

Yêu THVBA
Nguyên nhân: Do bạn lập sự kiện Worksheet_SelectionChange nên mỗi lần nhấn một ô bất kể có thay đổi value ô đó không là chạy code > chậm file (hiện tượng là mỗi lần click mỗi lần chuột xoay)
Giải quyết: Sửa sự kiện lại thành Worksheet_Change
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
và thêm code này vào đầu để chỉ chạy code khi thay đổi giá trị tại ô I39:J39 ==> Sẽ thấy khác biệt
Mã:
If Not Application.Intersect(Range("I39:J39"), Range(Target.Address)) Is Nothing Then
Em đã fix được lỗi, em cảm ơn anh ạ..Hi
 
Sửa lần cuối:

tăng khải

Yêu THVBA
mình có đoạn code như này có mỗi khi kích vào nó sẽ xoay một lúc mới cho kết quả, có cách nào làm nó hiện ngay kết quả mà không xoay một lúc không ạ
Private Sub Worksheet_Activate()
Dim c As Range
Dim firstAddress As String
Application.ScreenUpdating = False
Rows("16:98").Hidden = False
With Range("c16:c98")
Set c = .Find(What:="", LookIn:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.EntireRow.Hidden = True
Set c = .FindNext(c)
Loop While Not c Is Nothing
End If
End With
End Sub
 
Top