Excel sử dụng bảng màu bao gồm 56 màu. Bạn có thể thấy những màu này nếu hiển thị tab Mẫu của hộp thoại Định dạng Ô.

Khi tạo macro trong VBA, bạn có thể muốn tham chiếu đến các màu này, theo tên, sử dụng hằng số.

Thật không may, VBA của Excel không có các hằng số được xác định cho từng màu trong số 56 màu trong bảng màu. Các màu duy nhất được xác định, theo tên, là thành viên của lớp ColorConstants và có tám thành viên của lớp: vbBlack, vbWhite, vbRed, vbGreen, vbBlue, vbYellow, vbMagenta và vbCyan.

Trong VBA, bạn có thể sử dụng thuộc tính ColorIndex để xác định màu bạn muốn sử dụng từ bảng màu của Excel. Vấn đề là ColorIndex không phải là một màu; nó là một chỉ mục trong bảng màu. Do đó, ColorIndex của 1 là màu đầu tiên trong bảng màu, 2 là màu thứ hai, v.v. Bạn có thể thấy điều này đang hoạt động bằng cách xem mã mẫu tại URL này:

http://www.ozgrid.com/VBA/ReturnCellColor.htm

Mã này kiểm tra thuộc tính ColorIndex cho một ô và trả về tên màu. Tuy nhiên, tên được trả về không phải là một hằng số cho màu sắc; nó chỉ là một mô tả về màu sắc mà bảng màu ở chỉ mục đó có vẻ như.

Nếu bạn muốn đặt màu của một ô, bạn thực sự nên sử dụng thuộc tính Color. Thuộc tính này cho phép bạn sử dụng tám hằng số màu VBA đã đề cập trước đó. Điều xảy ra là nếu bạn sử dụng thuộc tính Color này để đặt màu nội thất của ô, bạn sẽ thấy rằng tám màu được đặt tên tương ứng với các giá trị ColorIndex từ 1 đến 8. Macro sau minh họa điều này một cách độc đáo:

Sub CheckColors()

Dim arr8Colors As Variant     Dim i As Integer

arr8Colors = Array( _       vbBlack, vbWhite, vbRed, vbGreen, _       vbBlue, vbYellow, vbMagenta, vbCyan)

For i = 0 To 7         Selection.Offset(i, 0).Interior.Color = arr8Colors(i)

Selection.Offset(i, 1).Value = Selection.Offset(i, 0).Interior.ColorIndex     Next i End Sub

Sự tương ứng này cho tám giá trị đầu tiên giữa Color và ColorIndex chỉ nên được coi là một tạo tác của lịch sử, có từ những ngày mà Excel chỉ cho phép bạn sử dụng tám màu — tám màu được xác định bằng hằng số VBA. Nếu bạn muốn chỉ định một số màu khác cho một ô, bạn nên sử dụng hàm RGB để chỉ định thuộc tính Màu, như được hiển thị ở đây:

Selection.Interior.Color = RGB(128, 64, 255)

Chức năng RGB cho phép bạn chỉ định các thành phần màu đỏ, xanh lục và xanh lam của bất kỳ màu nào. Mỗi thành phần có thể có giá trị từ 0 đến 255.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.

Mẹo này (2778) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003.