Miền Cát Trắng
Thành viên hoạt động



- Tham gia
- 18/5/13
- Bài viết
- 171
- Được thích
- 37
Muốn VBA thì thử chạy Sub này coi sao:Xin kính chào mọi người.
Tôi đang gặp phải một vấn đề như đã nêu rõ trong file đính kèm.
Nếu sử dụng chức năng CF thì tôi có thể làm được nhưng tôi muốn tìm hiểu khi làm bằng vba. Mong mọi người giúp đỡ.
Xin cảm ơn!
Public Sub GPE()
Dim Rng As Range, Cll As Range, DK As Long
With Sheet1
DK = .[C5].Value
.[C8:K1000].Interior.ColorIndex = 0
Set Rng = .Range(.[C8], .[C8].End(xlDown))
For Each Cll In Rng
If Cll.Value = DK Then
Cll.Resize(, 9).Interior.ColorIndex = 6
MsgBox "Ma oi, Ma oi ..... Cuu con!"
End If
Next Cll
End With
Set Rng = Nothing
End Sub
Trước hết xin cảm Thầy đã vui vẻ giúp đỡ!Muốn VBA thì thử chạy Sub này coi sao:
PHP:Public Sub GPE() Dim Rng As Range, Cll As Range, DK As Long With Sheet1 DK = .[C5].Value .[C8:K1000].Interior.ColorIndex = 0 Set Rng = .Range(.[C8], .[C8].End(xlDown)) For Each Cll In Rng If Cll.Value = DK Then Cll.Resize(, 9).Interior.ColorIndex = 6 MsgBox "Ma oi, Ma oi ..... Cuu con!" End If Next Cll End With Set Rng = Nothing End Sub
Xem Cái "má ơi...má ơi ..." này thử xem, sao nhiều cái "oái oăm" vậy?Trước hết xin cảm Thầy đã vui vẻ giúp đỡ!
Về cơ bản thì code của Thầy viết rất đúng ý với em đã nêu tuy nhiên còn một chút xíu nữa mong Thầy sửa giúp cho ạ. Đó là các cột màu xanh trong khung vẫn giữ nguyên màu xanh.
Nghĩa là điều kiện màu vàng chỉ hoạt động trong vùng [C8:E17,G8:I17,K8:K17] thôi ạ!
------------------
Em định thêm một dòng code tô lại các vùng màu xanh này. Nhưng nếu như vậy thì nghĩa phải thêm 1 công đoạn phải không ạ. Mong Thầy chỉ dẫn thêm để không phải thêm công đoạn này nữa ạ.
Cảm ơn Thầy!
Public Sub GPE()
Dim Rng As Range, Cll As Range, DK As Long, MaOI As Range
With Sheet1
DK = .[C5].Value
Set MaOI = Union(.[C8:E17], .[G8:I17], .[K8:K17])
MaOI.Interior.ColorIndex = 0
Set Rng = .Range(.[C8], .[C8].End(xlDown))
For Each Cll In Rng
If Cll.Value = DK Then
Set MaOI = Union(Cll.Resize(, 3), Cll.Offset(, 4).Resize(, 3), Cll.Offset(, 8))
MaOI.Interior.ColorIndex = 6
MsgBox "Ma oi, Ma oi ..... Cuu con!"
End If
Next Cll
End With
Set Rng = Nothing
Set MaOI = Nothing
End Sub
Xem Cái "má ơi...má ơi ..." này thử xem, sao nhiều cái "oái oăm" vậy?
PHP:Public Sub GPE() Dim Rng As Range, Cll As Range, DK As Long, MaOI As Range With Sheet1 DK = .[C5].Value Set MaOI = Union(.[C8:E17], .[G8:I17], .[K8:K17]) MaOI.Interior.ColorIndex = 0 Set Rng = .Range(.[C8], .[C8].End(xlDown)) For Each Cll In Rng If Cll.Value = DK Then Set MaOI = Union(Cll.Resize(, 3), Cll.Offset(, 4).Resize(, 3), Cll.Offset(, 8)) MaOI.Interior.ColorIndex = 6 MsgBox "Ma oi, Ma oi ..... Cuu con!" End If Next Cll End With Set Rng = Nothing Set MaOI = Nothing End Sub
Xem Cái "má ơi...má ơi ..." này thử xem, sao nhiều cái "oái oăm" vậy?
PHP:Public Sub GPE() Dim Rng As Range, Cll As Range, DK As Long, MaOI As Range With Sheet1 DK = .[C5].Value Set MaOI = Union(.[C8:E17], .[G8:I17], .[K8:K17]) MaOI.Interior.ColorIndex = 0 Set Rng = .Range(.[C8], .[C8].End(xlDown)) For Each Cll In Rng If Cll.Value = DK Then Set MaOI = Union(Cll.Resize(, 3), Cll.Offset(, 4).Resize(, 3), Cll.Offset(, 8)) MaOI.Interior.ColorIndex = 6 MsgBox "Ma oi, Ma oi ..... Cuu con!" End If Next Cll End With Set Rng = Nothing Set MaOI = Nothing End Sub
Set MaOI = Union([B].[C8:E17], .[G8:I17], .[K8:K17][/B])
Set Rng = .Range(.[C8], .[C8][COLOR=#ff0000][B].End(xlDown)[/B][/COLOR])
Chời ơi!Nhưng mà với cái đoạn này của Thầy:
Mà kết hợp với đoạn này:Mã:Set MaOI = Union([B].[C8:E17], .[G8:I17], .[K8:K17][/B])
thì em nghĩ là chưa hợp lý bởi vì nếu điều kiện khi tô màu vàng ngoài vùng MaOI thì sẽ không thể trở về 0 được khi ngoài vùng MaOI này không còn đúng với điều kiện ạ.Mã:Set Rng = .Range(.[C8], .[C8][COLOR=#ff0000][B].End(xlDown)[/B][/COLOR])
Biểu sao làm vậy, kết quả có đúng không?Nghĩa là điều kiện màu vàng chỉ hoạt động trong vùng [C8:E17,G8:I17,K8:K17] thôi ạ!
Code dzì:Rng.Offset(, 3).Interior.ColorIndex = 50
Rng.Offset(, 7).Interior.ColorIndex = 50
Public Sub GPE()
Dim Rng As Range, Cll As Range, DK As Long
With Sheet1
DK = .[C5].Value
.[C8:K1000].Interior.ColorIndex = 0
Set Rng = .Range(.[C8], .[C8].End(xlDown))
For Each Cll In Rng
If Cll.Value = DK Then
Cll.Resize(, 9).Interior.ColorIndex = 6
MsgBox "Ma oi, Ma oi ..... Cuu con!"
End If
Next Cll
Rng.Offset(, 3).Interior.ColorIndex = 50
Rng.Offset(, 7).Interior.ColorIndex = 50
End With
Set Rng = Nothing
End Sub
Lỡ "má ơi" muốn thay đổi 2 cột F và J bằng cái màu "má ơi" nào khác tuỳ thích bằng thủ công thì "má ơi... má ơi" tiếp tục.Má ơi !!! Cái bài này cứ Má ơi như lúc đầu, Má ơi xong thì chèn 2 dòng này vào cho nhẹ nhàng
Code dzì:
Híc, Má ơiMã:Public Sub GPE() Dim Rng As Range, Cll As Range, DK As Long With Sheet1 DK = .[C5].Value .[C8:K1000].Interior.ColorIndex = 0 Set Rng = .Range(.[C8], .[C8].End(xlDown)) For Each Cll In Rng If Cll.Value = DK Then Cll.Resize(, 9).Interior.ColorIndex = 6 MsgBox "Ma oi, Ma oi ..... Cuu con!" End If Next Cll Rng.Offset(, 3).Interior.ColorIndex = 50 Rng.Offset(, 7).Interior.ColorIndex = 50 End With Set Rng = Nothing End Sub
Thân
Thì trước khi Má Ơi tìm em trùng tô màu vàng, mình cho chạy theo cột trong vùng dữ liệu,Má Ơi điểm mặt cột nào có màu & màu gì gom bỏ vào một biến để dành đóLỡ "má ơi" muốn thay đổi 2 cột F và J bằng cái màu "má ơi" nào khác tuỳ thích bằng thủ công thì "má ơi... má ơi" tiếp tục.
Híc!
Ẹc..
Record macro thôi! Chứ đề không có điều kiện này thích tô sao tô rồiXin chào cả nhà
Tôi đang muốn tô màu theo từng vùng (như file đính kèm). Tôi muốn tìm hiểu khi sử dụng bằng vba. Mong mọi người giúp đỡ.
Xin cảm ơn!
không có điều kiện cụ thể nào cho vùng nào,thì bạn xem cái code phía trên ấy lệnh tô màu đó rồi cứ phang thẳng cái vùng đó cho màu đó là được chứ nhìn cái file của bạn thì chưa biết làm như thế nào cho tối ưu cả View attachment 248284Mã:sheet1.Range("A34:G44").Interior.ColorIndex = 6
Cám ơn Bạn đã hướng dẫn. Ý mình đây là có đoạn code nào hướng dẫn tô màu theo vùng.
Vd: từ ô A6 -> G12: tô màu xanh dương
từ ô A13 -> G21: tô màu vàng
từ ô A22 -> G44: tô màu xanh lá
sheet1.Range("A34:G44")
.Interior.ColorIndex = 6
tự đông kiểu như thế nào đã chứ,tự động cũng cần có điêu kiện để giới hạn vùng,chứ còn không nó chạy tùm lum làm sao bạn?Mình đã tô được màu từng cùng cố định. Nhưng mình muốn dùng code để tự động tô mà không chỉnh từ vùng
Cái tối thiểu để tính toán "tự động" dù là công thức hay vba là cái điều kiện mà bạn ấy cũng không trình bày ra. Vậy mà bạn ấy cứ muốn "tự động", không hiểu tự động sao luônEnd Sub[/CODE]
tự đông kiểu như thế nào đã chứ,tự động cũng cần có điêu kiện để giới hạn vùng,chứ còn không nó chạy tùm lum làm sao bạn?