Nhờ các anh em xem hộ mình đoạn code này, vì mình viết code cũng chưa chuẩn (1 người xem)

Liên hệ QC

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

thanhsangnguyen1982

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
21/12/10
Bài viết
875
Được thích
499
Nghề nghiệp
Accounting - Auditing
Sub CheckBox33_Click()
Worksheets("phieugiaonhan").Range("$Q$1").Select
If Range("$Q$1") = True Then
Selection.AutoFilter Field:=15, Criteria1:="d"
ActiveWindow.SelectedSheets.PrintPreview
With Selection
.Value = xlOff
.LinkedCell = Range("$Q$1")
.Display3DShading = False
End With
ElseIf Range("$Q$1") = False Then
Range("I12").Select
ActiveSheet.ShowAllData
Range("N12").Select
End If
End Sub
Khi chạy nó báo lỗi chỗ mình tô màu đỏ, thanks các bạn trước nha!!
 
Code này còn lỗi nhiều chỗ vì không tường minh địa chỉ, có nhiều đoạn lệnh thừa.
Để chuấn xác bạn nên có file ví dụ và yêu cầu kết quả. Như vậy có thể có phương án khác hay hơn thì sao?
 
Upvote 0
Chỉnh sửa giúp đoạn code

Mình có đưa file đính kèm lên, Các bạn giúp mình nha!
 

File đính kèm

Upvote 0
Sao lại có Pass vào VBA vậy
 
Upvote 0
ah sorry mình quên pass: 061282.
 
Upvote 0
Mình có đưa file đính kèm lên, Các bạn giúp mình nha!
Đoạn code của bạn thứ nhất bị lỗi là do
Worksheets("phieugiaonhan").Range("$Q$1").Select
If Range("$Q$1") = True Then
Selection.AutoFilter Field:=15, Criteria1:="d"
Bắt đầu lỗi ngay đó rồi. Selection.AutoFilter Field:=15, Criteria1:="d". Tại vì vùng Selection của bạn không rõ ràng bạn sửa lại vậy thì ok Worksheets("phieugiaonhan").Range("A1:$Q$1").Select
With Selection
.Value = xlOff
.LinkedCell = Range("$Q$1")
.Display3DShading = False
End With
Bạn bỏ đoạn code đó đi
 
Upvote 0
Bạn thử code sau xem:

Mã:
Sub CheckBox33_Click()
Dim i
  Application.ScreenUpdating = False
    For i = 16 To 54
      If Sheet6.[Q1] = True Then
        Sheet6.Rows(i).EntireRow.Hidden = Sheet6.Cells(i, "O") <> "d"
       Else
     Sheet6.Rows(i).EntireRow.Hidden = False
    End If
   Next
 If Sheet6.[Q1] = True Then Sheet6.PrintPreview
End Sub
 
Upvote 0
Thanks bạn nmhung49 nhiều nha, đơn giản như vậy mà mình nghĩ không ra. vì mình cũng đang bập bẹ tập viết và tìm hiểu về VBA.
 
Upvote 0
Sub CheckBox33_Click()
Worksheets("phieugiaonhan").Range("$Q$1").Select
If Range("$Q$1") = True Then
Selection.AutoFilter Field:=15, Criteria1:="d"
ActiveWindow.SelectedSheets.PrintPreview
With Selection
.Value = xlOff
.LinkedCell = Range("$Q$1")
.Display3DShading = False
End With
ElseIf Range("$Q$1") = False Then
Range("I12").Select
ActiveSheet.ShowAllData
Range("N12").Select
End If
End Sub
Khi chạy nó báo lỗi chỗ mình tô màu đỏ, thanks các bạn trước nha!!
Bạn sửa câu lệnh này thành .LinkedCell = "$Q$1" là được.

Trời đất! Thành viên tích cực mà cũng post bài nhiều nơi vậy à?
http://www.giaiphapexcel.com/forum/...ạn-code-này-vì-mình-viết-code-cũng-chưa-chuẩn
 
Lần chỉnh sửa cuối:
Upvote 0
Còn dùng Filter code chỉ cần như sau:

Mã:
Sub CheckBox33_Click()
If Sheet6.[Q1] = True Then
Sheet6.Range("O14:O54").AutoFilter Field:=1, Criteria1:="d"
Else
Sheet6.Range("O14:O54").AutoFilter
End If
End Sub

Bạn chỉ filter cột O thôi vì tránh để các dấu chọn Filter khắp các cột
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom