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

  • Thread starter Thread starter limfx
  • Ngày gửi Ngày gửi
Liên hệ QC

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

limfx

Thành viên mới
Tham gia
20/2/09
Bài viết
34
Được thích
1
Tôi có một bảng tính như trên:
Tôi muốn chọn Phương án 1: Hiện các dòng tô xanh, ần các dòng tô vàng
Chọn Phương án 2: Hiện các dòng tô vàng, ẩn các dòng to xanh.
Các bạn giúp mình với ! Thanks!
 

File đính kèm

Thông thường việc điều khiển sự tác động nên dựa vào 1 điều kiện chắc chắn nào đó (ví dụ: dựa vào giới tính, mức lương, ngày sinh, ...), ở đây bạn muốn điều khiển thông qua việc tô màu của các dòng - đây không thuộc dạng điều kiện khách quan, chắc chắn, mà nhiều khả năng phụ thuộc vào ý muốn chủ quan của người dùng. Giả sử bạn có dùng định dạng có điều kiện để tạo ra sự thay đổi màu thì trước đó bạn vẫn phải dựa trên những điều kiện xác thực của vùng dữ liệu.
Do đó 1 lời khuyên là bạn nên thay đổi cách đặt lại vấn đề của bạn.
Trong trường hợp bạn nhất quyết giữ theo cách dùng điều kiện của sự tô màu thì dùng đoạn code sau (đặt trong sự kiện Change của WorkSheet):
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> [$C$3].Address Then Exit Sub
Dim ra As Range
Application.ScreenUpdating = False
Set ra = Me.Range("A4:A18")
    With ra
    ra.Rows.EntireRow.Hidden = False
    For i = 1 To ra.Rows.Count
        ra.Rows(i).EntireRow.Hidden = IIf(Target = 1, ra.Cells(i, 1).Interior.ColorIndex = 36, _
                ra.Cells(i, 1).Interior.ColorIndex = 35)
    Next
    End With
Set ra = Nothing
Application.ScreenUpdating = True
End Sub
 
Upvote 0
Ở đây mình muốn điều khiển thông qua việc chọn phương án 1 hoặc phương án 2; các dòng tô xanh, tô vàng là những dữ liệu tượng trưng ( cho dễ hiểu ) cần ẩn hoặc hiện tương ứng với phương án đó. Ý của mình là vậy!
 
Upvote 0
Thông thường việc điều khiển sự tác động nên dựa vào 1 điều kiện chắc chắn nào đó (ví dụ: dựa vào giới tính, mức lương, ngày sinh, ...), ở đây bạn muốn điều khiển thông qua việc tô màu của các dòng - đây không thuộc dạng điều kiện khách quan, chắc chắn, mà nhiều khả năng phụ thuộc vào ý muốn chủ quan của người dùng. Giả sử bạn có dùng định dạng có điều kiện để tạo ra sự thay đổi màu thì trước đó bạn vẫn phải dựa trên những điều kiện xác thực của vùng dữ liệu.
Do đó 1 lời khuyên là bạn nên thay đổi cách đặt lại vấn đề của bạn.
Trong trường hợp bạn nhất quyết giữ theo cách dùng điều kiện của sự tô màu thì dùng đoạn code sau (đặt trong sự kiện Change của WorkSheet):
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> [$C$3].Address Then Exit Sub
Dim ra As Range
Application.ScreenUpdating = False
Set ra = Me.Range("A4:A18")
    With ra
    ra.Rows.EntireRow.Hidden = False
    For i = 1 To ra.Rows.Count
        ra.Rows(i).EntireRow.Hidden = IIf(Target = 1, ra.Cells(i, 1).Interior.ColorIndex = 36, _
                ra.Cells(i, 1).Interior.ColorIndex = 35)
    Next
    End With
Set ra = Nothing
Application.ScreenUpdating = True
End Sub
With ra
.................
................
End With
Cái With ra với End with này hơi thừa trong code anh nhỉ? hiiiiiiii
 
Upvote 0
Đưa vào With ... End With mà quên bỏ tham chiếu trực tiếp đên biến ở bên trong.
>>> TO: limfx - đoạn code trên thực hiện đúng như yêu cầu của bạn.
 
Upvote 0
Tôi có một bảng tính như trên:
Tôi muốn chọn Phương án 1: Hiện các dòng tô xanh, ần các dòng tô vàng
Chọn Phương án 2: Hiện các dòng tô vàng, ẩn các dòng to xanh.
Các bạn giúp mình với ! Thanks!
Bạn có sử dụng Ex2007? nếu có thì trong đó có chức năng lọc theo màu, bạn có thể ẩn màu nào tuỳ bạn thích bằng cách nhấp chuột
 
Upvote 0
Thông thường việc điều khiển sự tác động nên dựa vào 1 điều kiện chắc chắn nào đó (ví dụ: dựa vào giới tính, mức lương, ngày sinh, ...), ở đây bạn muốn điều khiển thông qua việc tô màu của các dòng - đây không thuộc dạng điều kiện khách quan, chắc chắn, mà nhiều khả năng phụ thuộc vào ý muốn chủ quan của người dùng. Giả sử bạn có dùng định dạng có điều kiện để tạo ra sự thay đổi màu thì trước đó bạn vẫn phải dựa trên những điều kiện xác thực của vùng dữ liệu.
Do đó 1 lời khuyên là bạn nên thay đổi cách đặt lại vấn đề của bạn.
Trong trường hợp bạn nhất quyết giữ theo cách dùng điều kiện của sự tô màu thì dùng đoạn code sau (đặt trong sự kiện Change của WorkSheet):
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> [$C$3].Address Then Exit Sub
Dim ra As Range
Application.ScreenUpdating = False
Set ra = Me.Range("A4:A18")
    With ra
    ra.Rows.EntireRow.Hidden = False
    For i = 1 To ra.Rows.Count
        ra.Rows(i).EntireRow.Hidden = IIf(Target = 1, ra.Cells(i, 1).Interior.ColorIndex = 36, _
                ra.Cells(i, 1).Interior.ColorIndex = 35)
    Next
    End With
Set ra = Nothing
Application.ScreenUpdating = True
End Sub

Mình đã làm nhưng không thấy kết quả gì cả, bạn có thể thao tác trên file rối gửi lên cho mình được không! Thanks!
 
Upvote 0

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bạn hoangvuluan rất nhiều, cái này lâu nay mình mò miết mà không được, ứng dụng làm tinh gọn bảng tính và tạo nhiều phương án ... rất hay!
 
Upvote 0
Mình mới biết VBA nên còn non không hiểu hết code bạn viết để ứng dụng. Bây giờ mình có thêm 1 phương án 3 hoặc 4,5 thì cách sửa code như thế nào nhỉ ?
 
Upvote 0
Bạn muốn thế nào thì cứ đưa file lên, không có file khó mà làm đúng ý được
 
Upvote 0
Upvote 0
Thông thường việc điều khiển sự tác động nên dựa vào 1 điều kiện chắc chắn nào đó (ví dụ: dựa vào giới tính, mức lương, ngày sinh, ...), ở đây bạn muốn điều khiển thông qua việc tô màu của các dòng - đây không thuộc dạng điều kiện khách quan, chắc chắn, mà nhiều khả năng phụ thuộc vào ý muốn chủ quan của người dùng. Giả sử bạn có dùng định dạng có điều kiện để tạo ra sự thay đổi màu thì trước đó bạn vẫn phải dựa trên những điều kiện xác thực của vùng dữ liệu.
Do đó 1 lời khuyên là bạn nên thay đổi cách đặt lại vấn đề của bạn.
Trong trường hợp bạn nhất quyết giữ theo cách dùng điều kiện của sự tô màu thì dùng đoạn code sau (đặt trong sự kiện Change của WorkSheet):
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> [$C$3].Address Then Exit Sub
Dim ra As Range
Application.ScreenUpdating = False
Set ra = Me.Range("A4:A18")
    With ra
    ra.Rows.EntireRow.Hidden = False
    For i = 1 To ra.Rows.Count
        ra.Rows(i).EntireRow.Hidden = IIf(Target = 1, ra.Cells(i, 1).Interior.ColorIndex = 36, _
                ra.Cells(i, 1).Interior.ColorIndex = 35)
    Next
    End With
Set ra = Nothing
Application.ScreenUpdating = True
End Sub

Bạn ơi cóthể giúp mình việc này dc không?
mình có 1 sheet tên là bán hàng, và 1 sheet tên là Bản In, bên bản in là chiết xuất dữ liệu từ bên bán hàng qua, vùng chiết xuất dữliệu bên bản in là từ dòng 5 đến dòng 20 (mình dùng công thức chiết xuất), mình muốn làm là khi dữ liệu chiết xuất chỉcó 5 dòng thì những dòng không có dữ liệu tự động ẩn đi (chỉ hiện dòng có dữ liệu), chỉ mình làm nha, cámơn!
 
Upvote 0
Web KT

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

Back
Top Bottom