Nhờ giúp rút gọn dùm code. (1 người xem)

Liên hệ QC

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

thanhtam348

Thành viên thường trực
Tham gia
9/3/07
Bài viết
288
Được thích
62
Tôi "mò mẩm" tạo đoạn code sau để ShowAll AutoFilter các cột, nhưng nó dài dòng và chạy ì ạch quá, nhờ anh chị hay bạn nào giúp đở có thể thu ngắn hơn và chạy mượt hơn, cám ơn nhiều.
Mã:
Private Sub CommandButton6_Click()
ActiveSheet.Unprotect
On Error Resume Next
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=1
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=2
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=3
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=4
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=5
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=6
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
End Sub
 
Tôi "mò mẩm" tạo đoạn code sau để ShowAll AutoFilter các cột, nhưng nó dài dòng và chạy ì ạch quá, nhờ anh chị hay bạn nào giúp đở có thể thu ngắn hơn và chạy mượt hơn, cám ơn nhiều.
Mã:
Private Sub CommandButton6_Click()
ActiveSheet.Unprotect
On Error Resume Next
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=1
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=2
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=3
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=4
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=5
    ActiveSheet.Range("D4:I20000").AutoFilter Field:=6
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowSorting:=True, AllowFiltering:=True
End Sub
Mấy chổ AutoFilter ấy chỉ cần thay bằng đoạn này ActiveSheet.ShowAllData là xong
 
Upvote 0
Cám ơn anh ndu, mình làm được rồi.
Tiện cho xin hỏi thêm: nếu muốn đặt Pass riêng cho mình thì làm sao? - mình làm hoài không được.
 
Upvote 0
Bạn thử với code này xem
Mã:
ActiveSheet.Protect "GPE"  ' Pass mở Sheet là GPE bạn có thể thay đổi tùy ý
 
Upvote 0
Cám ơn nmhung49.
Nhưng ý mình muốn nói là mình đặt Pass sẳn trong Protect Sheet, khi cần mình sẽ Click nút CommandButton để ShowAll các cột DL mà vẩn giử được Pass của mình.
 
Upvote 0
Cám ơn nmhung49.
Nhưng ý mình muốn nói là mình đặt Pass sẳn trong Protect Sheet, khi cần mình sẽ Click nút CommandButton để ShowAll các cột DL mà vẩn giử được Pass của mình.
Thì đằng nào muốn ShowAll cũng phải Unprotect trước, đúng không? Ta Unprotect với Pass của ta đặt trước đó, xong việc lại Protect cũng với cái pass ấy
Thế thôi
PHP:
Private Sub CommandButton6_Click()
  On Error Resume Next
  ActiveSheet.Unprotect "GPE"
  ActiveSheet.ShowAllData
  ActiveSheet.Protect "GPE"
End Sub
 
Upvote 0
Cám ơn anh ndu và các bạn nhiều, sự việt đã tốt rồi.
 
Upvote 0
Cái câu này nói gì vậy anh: On Error Resume Next
 
Upvote 0
Cái câu này nói gì vậy anh: On Error Resume Next
Tôi không hiểu về lập trình, nhưng tôi hiểu nôm na rằng câu đó để bỏ qua lổi nếu có lổi xảy ra, còn trả lời chính xác thì chỉ có những bậc đàn thầy - vậy xin để các anh các chị GPE trả lời giúp bạn.
 
Upvote 0
Web KT

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

Back
Top Bottom