So sánh màu sắc trong Excel (1 người xem)

Liên hệ QC

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

phuvacgach

Thành viên chính thức
Tham gia
13/3/11
Bài viết
56
Được thích
9
Dear anh chị,
Em có bài này muốn nhờ mọi người hỗ trợ.
Trong Cột C, em muốn khi fill màu thì màu nào trùng nhau sẽ có thông báo không được fill màu đó.
Mọi người biết chỉ giúp em nhé.
Em cảm ơn.
 

File đính kèm

Dear anh chị,
Em có bài này muốn nhờ mọi người hỗ trợ.
Trong Cột C, em muốn khi fill màu thì màu nào trùng nhau sẽ có thông báo không được fill màu đó.
Mọi người biết chỉ giúp em nhé.
Em cảm ơn.

Thử dùng VBA --> viết 1 sự kiện trong worksheet_change()

bạn tùy biến theo sub() sau thử xem :

[GPECODE=vb]Sub GPE()
Dim mycell As Range, rng As Range
Dim tmparr, tmp As Long
Set rng = Range("C1", [C65536].End(3))
tmparr = rng.Value
Set CLR = CreateObject("scripting.dictionary")
For Each mycell In rng
tmp = mycell.Interior.Color
If Not CLR.exists(tmp) Then
CLR.Add tmp, ""
Else
MsgBox mycell.Address
End If
Next
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Thử dùng VBA --> viết 1 sự kiện trong worksheet_change()

bạn tùy biến theo sub() sau thử xem :

[GPECODE=vb]Sub GPE()
Dim mycell As Range, rng As Range
Dim tmparr, tmp As Long
Set rng = Range("C1", [C65536].End(3))
tmparr = rng.Value
Set CLR = CreateObject("scripting.dictionary")
For Each mycell In rng
tmp = mycell.Interior.Color
If Not CLR.exists(tmp) Then
CLR.Add tmp, ""
Else
MsgBox mycell.Address
End If
Next
End Sub[/GPECODE]

Oh,
Dear anh,
Nhưng vẫn đề đang là, nếu thay đổi màu trong ô excel, thì excel không hiểu đó là sự kiên Change-Sự kiện Change chỉ khi thay đổi gia trị.
 
Upvote 0
Bác hướng dẫn cụ thế giúp em được không?
Em mới học vba nên vẫn ngu ngu mấy sự kiện nay.


-----------> cũng tạm đưa ra một đoạn code ( bạn tham khảo và sửa --> để cải thiện về mặt tốc độ )

[GPECODE=vb]Function GPE(rng As Range) As Boolean
Dim Ir As Integer, chk As Long
Dim Mycell As Range, Tmp As Long, Cell As Range
With CreateObject("Scripting.Dictionary")
Ir = rng.Row: chk = rng.Interior.Color
If Ir = 1 Then
Set rng = Range("C2 :C65536")
Else
Set rng = Union(Range("C1:C" & Ir - 1 & ""), Range("C" & Ir + 1 & " :C65536"))
End If
For Each Mycell In rng.Areas
For Each Cell In Mycell
Tmp = Cell.Interior.Color
If Not .exists(Tmp) And Tmp <> 16777215 Then .Add Tmp, ""
Next
Next
If .exists(chk) Then GPE = 1
End With
End Function[/GPECODE]

Thêm sự kiện vào -->

[GPECODE=vb]Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [C:C]) Is Nothing Then
If GPE(Target)Then MsgBox " ABCXYZ"
End If
End Sub[/GPECODE]
 
Lần chỉnh sửa cuối:
Upvote 0
Thế chọn màu xong họ không bấm vào ô nào trong bảng tính đó mà chuyển sheet khác code trên không có tác dụng.
 
Upvote 0
Upvote 0
Bài này nếu làm chắc cũng phải dùng đến Class
Lang thang trên web, thấy có bài này:
http://www.mrexcel.com/forum/excel-...l-color-change-visual-basic-applications.html
Không biết Tuân có ý kiến gì khác không?

Vâng. Đây là giải pháp chuẩn. Tuy nhiên khi ứng dụng cho công việc cụ thể cần có những lệnh kiểm tra khi nào thì cần kiểm tra và làm thật chặt chẽ để nó không làm chậm máy.
 
Upvote 0

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

Back
Top Bottom