limfx
Thành viên mới

- Tham gia
- 20/2/09
- Bài viết
- 34
- Được thích
- 1
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 raThô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 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ộtTô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!
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
Có thể là do bạn chưa cho phép macro thực hiện.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!
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ỉ ?
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