Ẩn hàng theo điều kiện. (1 người xem)

  • Thread starter Thread starter M@trixs
  • Ngày gửi Ngày gửi
Liên hệ QC

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

M@trixs

Thành viên thường trực
Tham gia
3/3/11
Bài viết
257
Được thích
336
Hiện mình có tìm thấy đoạn code sau của bác ndu96081631 :
PHP:
Sub Cmd_Click()
  DK = Cmd.Caption = "Loc"
  Range("A10:A28").SpecialCells(3, 22).EntireRow.Hidden = DK
  Cmd.Caption = Choose(-1 * DK + 1, "Loc", "Khong Loc")
End Sub

Khi mình đem vào file excel của mình thì nó không chạy. Bác nào làm giùm mình với. Mình gởi kèm file bên dưới.... Mình muốn thay cột STT thành cột Mã Hiệu, và số dòng cuối không phải là 28 mà có thể là 1000000 (vì dữ liệu nhiều, nếu như có đoạn mã không cần định giới hạn thì hay hơn).

Nếu có thời gian bác nào giải thích giùm đoạn mã trên với. Có phãi diễn giải nó ra như thế này không:
Tìm nút bấm có tên "cmd" xem có tiêu đề là "Loc" hay không, nếu là "Loc" thì chạy đoạn mã bên dưới bắt đầu từ ô A10 đến A28, nếu ô nào rỗng thì thiết lập cho nó thuộc tính ẩn. Còn nếu có chữ "Không lọc " thì dừng chương trình lại.
 

File đính kèm

Lần chỉnh sửa cuối:
Hiện mình có tìm thấy đoạn code sau của bác ndu96081631 :
PHP:
Sub Cmd_Click()
  DK = Cmd.Caption = "Loc"
  Range("A10:A28").SpecialCells(3, 22).EntireRow.Hidden = DK
  Cmd.Caption = Choose(-1 * DK + 1, "Loc", "Khong Loc")
End Sub

Khi mình đem vào file excel của mình thì nó không chạy. Bác nào làm giùm mình với. Mình gởi kèm file bên dưới.... Mình muốn thay cột STT thành cột Mã Hiệu, và số dòng cuối không phải là 28 mà có thể là 1000000 (vì dữ liệu nhiều, nếu như có đoạn mã không cần định giới hạn thì hay hơn).

Nếu có thời gian bác nào giải thích giùm đoạn mã trên với. Có phãi diễn giải nó ra như thế này không:
Tìm nút bấm có tên "cmd" xem có tiêu đề là "Loc" hay không, nếu là "Loc" thì chạy đoạn mã bên dưới bắt đầu từ ô A10 đến A28, nếu ô nào rỗng thì thiết lập cho nó thuộc tính ẩn. Còn nếu có chữ "Không lọc " thì dừng chương trình lại.
Bạn xem File nha, làm cho bạn cho đến hết dòng!
 

File đính kèm

Upvote 0
Bác có thể giải thích và hướng dẫn cách làm cho em được ko ? Vì sau này nếu gặp thì em còn biết đường vận dụng. Chứ không lại phải lên đây xin xỏ giúp đỡ thì quá tội các bác
 
Upvote 0
Bác có thể giải thích và hướng dẫn cách làm cho em được ko ? Vì sau này nếu gặp thì em còn biết đường vận dụng. Chứ không lại phải lên đây xin xỏ giúp đỡ thì quá tội các bác
Thực code không phải là ẩn hàng mà là code lọc dữ liệu theo cột B. Để có được code bạn thử Record Macros và sửa lại theo ý
 
Upvote 0
Nếu có thời gian bác nào giải thích giùm đoạn mã trên với. Có phãi diễn giải nó ra như thế này không:
Tìm nút bấm có tên "cmd" xem có tiêu đề là "Loc" hay không, nếu là "Loc" thì chạy đoạn mã bên dưới bắt đầu từ ô A10 đến A28, nếu ô nào rỗng thì thiết lập cho nó thuộc tính ẩn. Còn nếu có chữ "Không lọc " thì dừng chương trình lại.
Là thế này đây:
- Range("A10:A28").SpecialCells(3, 22) nghĩa là tìm trong vùng A10:A28 xem thử cell nào chứa công thức (số 3) nhưng không trả về kết quả là number (số 22) thì chọn để cho ẩn---> Bạn phải tham khảo thêm về SpecialCells nhé
-----------------------
Mình muốn thay cột STT thành cột Mã Hiệu, và số dòng cuối không phải là 28 mà có thể là 1000000 (vì dữ liệu nhiều, nếu như có đoạn mã không cần định giới hạn thì hay hơn).

.
File của bạn là xls (được tạo từ Excel 2003) lấy đâu ra 1000000 dòng chứ (chỉ có thể là 65536 dòng thôi)
------------------------
Bạn có thể vẽ 1 CommandButton rồi chèn code này vào là được rồi
PHP:
Private Sub CommandButton1_Click()
  With CommandButton1
    Range("B9:B60000").SpecialCells(4).EntireRow.Hidden = (.Caption = "Loc")
    .Caption = IIf(.Caption = "Loc", "Khong loc", "Loc")
  End With
End Sub
Lưu ý thêm:
- SpecialCells(4) là các cell rổng
- Dùng SpeciallCells sẽ có giới hạn, nhất là với dữ liệu lớn nó sẽ bị lỗi. Trong trường hợp này tốt nhất là dùng AutoFilter như bạn dongducnhiem đã làm, có điều code bạn ấy dài quá... Nếu là tôi thì tôi sẽ sửa code ấy thế này:
PHP:
Sub LocDieuKien_1()
  With Sheet1.Shapes("DongDucNhiem")
    .Parent.Range("B8:B65536").AutoFilter 1, "<>", xlOr, IIf(.TextFrame.Characters.Text = "Loc", "<>", "="), False
    .TextFrame.Characters.Text = IIf(.TextFrame.Characters.Text = "Loc", "Khong Loc", "Loc")
  End With
End Sub
Tôi đưa lên 2 file với 2 cách làm cho bạn tham khảo nhé
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom