Đó là mầu, là color -
Selection.Interior.Color
Ta thiết lập mầu bằng cách đưa ra 3 thành phần red, green và blue của mầu. Tức nếu muốn mầu đỏ thì red = 255 green = 0, blue = 0. Tức
Mầu = RGB(255, 0, 0) trong đó RGB là một hàm của VBA.
Nhưng ta hãy tưởng tượng là Excel "soạn", "lấy từ đâu đó" một bảng mầu, kiểu như họa sỹ người ta có một bảng mầu (palette) rồi họ chấm bút vẽ vào từng mầu trong bảng mầu. Bảng mầu của Excel có 56 mầu.
Vậy trong Excel có thể xác định mầu bằng cách chọn chỉ số của mầu trong bảng mầu, hoặc cung cấp trực tiếp mầu (là một con số. Hàm RGB trả về một con số: RGB(r, g, b) = b*65536 + g*256 + r). Chỉ có một số hữu hạn chỉ số (56) trong khi số các giá trị mầu là cực nhiều, vậy sẽ có nhiều giá trị mầu có cùng chỉ số. Thí nghiệm:
1. chọn A1 -> Format cells -> thẻ Fill -> chọn More Colors -> thẻ Custom -> chọn red = 192, green = 192, blue = 192 -> OK -> OK -> có hình
-> vào
VBE -> trong cửa sổ
Immediate nhập
?Selection.Interior.ColorIndex, Selection.Interior.Color
Sau đó nhập
?RGB(192, 192, 192)
Kết quả sẻ như hình
Tức mầu nền A1 có chỉ số 15 trong bảng mầu, và GIÁ TRỊ mầu = 12632256 = RGB(192, 192, 192), trong đó 3 giá trị red, green và blue là 3 giá trị ta đã chọn khi FILL.
2. Lặp lại điểm 1, chỉ có chỗ khác duy nhất là chọn red = 197, green = 197, blue = 197. Sẽ có hình
Rõ ràng 2 mầu có cùng chỉ số
15 nhưng 2 giá trị mầu khác nhau: RGB(192, 192, 192) =
12632256 <>
12961221 = RGB(197, 197, 197)
Tôi đoán mò là nhiều mầu khác nhau nhưng "
lơ lớ" như nhau sẽ có cùng một chỉ số -
ColorIndex.
Bạn không nói rõ, bạn cần ColorIndex để làm gì. Nếu muốn so sánh xem 2 mầu có y hệt như nhau 100% hay không thì phải so sánh Color, không thể so sánh ColorIndex. Với tôi 2 mầu như nhau khi và chỉ khi có cùng thành phần red, cùng thành phần green và cùng thành phần blue.