Có thể vẽ nền bằng hàm vba không. Màu ô trong Excel

Đôi khi cần phải thay đổi, xác định màu của ô cần sao chép hoặc tô lên một vùng nhất định, từ đó mang lại nét độc đáo và biểu cảm cho bảng dữ liệu.

Trong bài viết này, chúng ta sẽ xem xét cách bạn có thể thay đổi màu của ô theo cách thủ công cũng như cách thay đổi màu của một phạm vi ô hoặc một ô đã chọn trong VBA.

Hãy bắt đầu với một cái gì đó đơn giản. Trên thanh công cụ chính của ribbon là bảng Format Cells:

Để thay đổi màu của một ô (phạm vi ô), chúng ta cần chọn ô đó, sau đó chọn màu cần thiết trên Thanh công cụ. Bạn cũng có thể đặt các màu khác bằng cách chọn chúng từ bảng màu. Thanh công cụ cũng thay đổi màu chữ, cỡ chữ và định dạng đường viền ô.

Bây giờ hãy đặt định dạng ô bằng cách sử dụng danh mục, để thực hiện việc này, hãy nhấp chuột phải vào ô và chọn “Định dạng ô” trong danh sách mở ra:

Trên tab Fill, bạn có thể chọn màu nền và mẫu.

Hãy xem xét một tình huống hơi khác một chút. Giả sử bạn muốn sao chép màu (và định dạng) ô từ ô hiện có và áp dụng nó cho các ô của mình. Hãy sử dụng nút trên bảng điều khiển chính “Định dạng theo mẫu” (“whisk”):

Vì vậy, để sao chép định dạng, chúng ta cần chọn ô mà chúng ta quan tâm, nhấp vào “râu ria” và nhấp vào ô có định dạng mà chúng ta muốn đặt.

Các hoạt động tương tự có thể được mô tả trong Macro. Nếu có nhu cầu chèn một điều kiện vào mã, theo đó định dạng ô sẽ thay đổi hoặc các ô sẽ được tính tổng bằng một màu nhất định hoặc font thì sau khi copy định dạng và ghi macro các bạn sẽ thấy:

Đặt màu ô (A1 có màu Vàng):

Sub Macro2() Range("A1").Select With Selection.Interior .Color = 65535 Kết thúc bằng End Sub

Sao chép định dạng ô (định dạng A1 được sao chép sang A3):

Sub Macro1() Range("A1").Chọn Selection.Copy Range("A3").Chọn Selection.PasteỨng dụng đặc biệt.CutCopyMode = Sai End Sub

Giờ đây, bằng cách kết hợp định dạng với các toán tử có điều kiện, bạn có thể viết các phép tính (ví dụ: phép tính tổng) dựa trên điều kiện màu sắc.

Chúng tôi sẽ biết ơn nếu bạn nhấp vào +1 và/hoặc tôi thíchở cuối bài viết này hoặc chia sẻ với bạn bè của bạn bằng các nút bên dưới.

Tô màu cho ô VBA Excel. Nền tế bào. Thuộc tính.Interior.Color và.Interior.ColorIndex. Màu sắc mô hình RGB. Bảng màu tiêu chuẩn gồm 56 màu. Các hằng số được xác định trước.

Thuộc tính The.Interior.Color của đối tượng Range

Bắt đầu với Excel 2007, cách chính để tô màu cho một dải ô hoặc từng ô riêng lẻ (tô màu, thêm, thay đổi nền) là sử dụng thuộc tính Interior.Color của đối tượng Range bằng cách gán cho nó một giá trị màu dưới dạng số thập phân từ 0 đến 16777215 (tổng cộng 16777216 màu).

Tô màu cho ô trong VBA Excel

Mã ví dụ 1:

Phạm vi phụ ColorTest1()("A1").Interior.Color = 31569 Phạm vi("A4:D8").Interior.Color = 4569325 Phạm vi("C12:D17").Cells(4).Interior.Color = 568569 Ô (3, 6).Interior.Color = 12659 End Sub

Đặt mã ví dụ vào mô-đun phần mềm và nhấn nút trên thanh công cụ “Run Sub” hoặc trên bàn phím “F5”, con trỏ phải ở bên trong chương trình đang chạy. Trên trang tính đang hoạt động Ô Excel và phạm vi được chọn trong mã sẽ xuất hiện với các màu thích hợp.

Có một sắc thái thú vị: nếu được gán cho một tài sản .Màu nội thất giá trị âm từ -16777215 đến -1 thì màu sẽ tương ứng với giá trị, bằng với số tiền giá trị bảng màu tối đa (16777215) và được gán giá trị âm. Ví dụ: việc điền cả ba ô sau khi thực thi đoạn mã sau sẽ giống nhau:

Sub ColorTest11() Ô(1, 1).Interior.Color = -12207890 Ô(2, 1).Interior.Color = 16777215 + (-12207890) Ô(3, 1).Interior.Color = 4569325 End Sub

Đã thử nghiệm trong Excel 2016.

Hiển thị thông báo về giá trị màu số

Không thể nhớ các giá trị số của màu sắc, vì vậy câu hỏi thường đặt ra là làm thế nào để tìm ra giá trị số của nền ô. Mã VBA Excel sau đây hiển thị thông báo về giá trị số của các màu được gán trước đó.

Mã ví dụ 2:

Sub ColorTest2() Phạm vi MsgBox("A1").Interior.Color MsgBox Range("A4:D8").Interior.Color MsgBox Range("C12:D17").Cells(4).Interior.Color MsgBox Cells(3 , 6).Interior.Color End Sub

Thay vì hiển thị tin nhắn, bạn có thể gán giá trị số màu sắc cho các biến bằng cách khai báo chúng là Dài.

Sử dụng các hằng số được xác định trước

VBA Excel có các hằng số được xác định trước cho các màu tô ô thường được sử dụng:

Màu được gán cho một ô có hằng số được xác định trước trong VBA Excel theo cách tương tự như với giá trị số:

Mã ví dụ 3:

Phạm vi ("A1"). Nội thất.Color = vbGreen

Mô hình màu RGB

Hệ màu RGB là sự kết hợp của ba màu cơ bản có cường độ khác nhau: đỏ, lục và lam. Chúng có thể lấy các giá trị từ 0 đến 255. Nếu tất cả các giá trị bằng 0 thì nó có màu đen, nếu tất cả các giá trị là 255 thì nó có màu trắng.

Bạn có thể chọn một màu và tìm hiểu các giá trị RGB của nó bằng bảng Excel:

Trước khi bạn có thể gán màu cho một ô hoặc dải ô bằng các giá trị RGB, chúng phải được chuyển đổi thành số thập phân, biểu thị màu sắc. Có một hàm VBA Excel cho việc này, được gọi là RGB.

Mã ví dụ 4:

Phạm vi("A1").Interior.Color = RGB(100, 150, 200)

Property.Interior.ColorIndex của đối tượng Range

Trước sự ra đời của Excel Năm 2007 chỉ có một bảng màu giới hạn để tô nền cho các ô, bao gồm 56 màu, vẫn được bảo tồn cho đến ngày nay. Mỗi màu trong bảng màu này được gán một chỉ mục từ 1 đến 56. Bạn có thể gán màu cho một ô theo chỉ mục hoặc hiển thị thông báo về màu đó bằng thuộc tính .Interior.ColorIndex:

Mã ví dụ 5:

Phạm vi("A1").Interior.ColorIndex = 8 MsgBox Phạm vi("A1").Interior.ColorIndex

Bạn có thể xem bảng màu giới hạn để tô nền cho các ô bằng cách chạy trong VBA Excel là đơn giản nhất vĩ mô:

Mã ví dụ 6:

Sub ColorIndex() Dim i As Byte For i = 1 đến 56 Cells(i, 1).Interior.ColorIndex = i Next End Sub

Số hàng của trang tính đang hoạt động từ 1 đến 56 sẽ tương ứng với chỉ mục màu và ô ở cột đầu tiên sẽ được tô nền tương ứng với chỉ mục.

Bạn có thể thấy bảng màu tiêu chuẩn đã hoàn thành gồm 56 màu.

Thủ tục văn bản phụ_1() "Tạo trong bộ nhớ truy cập tạm thời máy tính "vùng được đặt tên - mảng" myColor". "Mảng bao gồm ba dòng và hai cột. “Nếu bạn cần tìm thêm ba từ, thì bạn cần thay đổi “số hàng ở đây: không phải từ 1 thành 3 mà ví dụ từ 1 thành 4.” Không cần thay đổi số cột. Dim myColor(1 To 3, 1 To 2) As String Dim rngSearch As Excel.Range Dim rngFind As Excel.Range, myAddress As String Dim i As Long "1. Đặt "myColor" vào mảng đầu tiên văn bản cột, "sẽ được tìm kiếm trong các ô Excel. "Trong cột thứ hai, chúng ta đặt số màu cần được "áp dụng". Số màu có thể được tìm thấy như thế này: "1) vào Excel; "2) kích hoạt ô mà bạn muốn tìm màu; "3) vào VBA; "4) Xem - Cửa sổ ngay lập tức. Một cửa sổ sẽ mở ra. Trong cửa sổ này, dán “mã này vào và nhấn phím “Enter”, sẽ nhận được số màu “print activecell.Interior.Color” 5) Ngoài ra còn có “ColorIndex”. Một số màu sắc nhất địnhđược tặng " con số nhất định. Trong trợ giúp về VBA (Excel 2010), nếu bạn “chèn văn bản “ColorIndex” vào góc trên bên phải và nhấn phím “Enter”, một danh sách các bài viết sẽ xuất hiện. "Chọn bài viết "Thuộc tính ColorIndex". Nó hiển thị "màu nào được gán số nào. "Tôi đặt các số trong dấu ngoặc kép vì tôi đã đặt cho mảng kiểu dữ liệu "Văn bản". myColor(1, 1) = "GR": myColor(1, 2) = "5287936" myColor(2, 1) = "RD" : myColor(2, 2) = "255" myColor(3, 1) = "Y": myColor(3, 2) = "65535" "2. Để thuận tiện cho việc viết mã, chúng tôi đặt tên “rngSearch” cho phạm vi ô mà "bạn cần tô màu lên các ô. Thông qua tên này, chúng tôi sẽ truy cập" phạm vi ô mong muốn. Set rngSearch = ActiveSheet.Range("A1:D25") "Sử dụng vòng lặp với "i", chúng ta xem qua tất cả các hàng trong mảng "myColor". "UBound(myColor, 1) là số thứ tự dòng cuối cùng trong mảng "myColor". For i = 1 To UBound(myColor, 1) Bước 1 "3. Tìm kiếm nhanh hơn thay vì xem từng ô. "LookAt:=xlWhole - tìm kiếm một kết quả hoàn chỉnh. Đặt rngFind = rngSearch.Find(What:=myColor(i, 1), LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) " Nếu tìm thấy, ô chứa văn bản tìm thấy sẽ được đặt tên là "rngFind". Và thông qua tên này, bạn có thể truy cập vào ô. "Nếu không tìm thấy thì biến "rngFind" sẽ chứa văn bản "Không có gì". Nếu rngFind là không có gì thì "4. Nếu không tìm thấy thì tiến hành tìm kiếm văn bản tiếp theo. Thẻ GoTo Kết thúc nếu "Nếu tìm thấy."5. Chúng tôi ghi nhớ địa chỉ của ô nơi nó được tìm thấy lần đầu tiên, “để sau này chúng tôi có thể dừng tìm kiếm. myAddress = rngFind.Address “Sử dụng chu trình “Do ... Loop”, chúng tôi tiếp tục tìm kiếm. Thực hiện "6. Tô màu ô bằng màu mong muốn. "Chúng tôi chứa số dưới dạng văn bản. Sử dụng "CLng" "chúng ta tạo một số thành một số. rngFind.Interior.Color = CLng(myColor(i, 2)) "7. Chúng tôi tiếp tục tìm kiếm. Đặt vòng lặp rngFind = rngSearch.FindNext(rngFind) trong khi rngFind.Address<>thẻ myAddress: Tiếp theo i "8. Thông báo rằng mã đã hoàn thành. MsgBox "Mã đã hoàn thành!", vbInformation End Sub

Tô màu cho ô trong VBA Excel. Nền tế bào. Thuộc tính.Interior.Color và.Interior.ColorIndex. Mô hình màu RGB. Bảng màu tiêu chuẩn gồm 56 màu.

Thuộc tính The.Interior.Color của đối tượng Range

Bắt đầu với Excel 2007, cách chính để tô màu cho một dải ô hoặc từng ô riêng lẻ (tô màu, thêm, thay đổi nền) là sử dụng thuộc tính.Interior.Color của đối tượng Phạm vi bằng cách gán cho nó một giá trị màu dưới dạng số thập phân từ 0 đến 16777215 (tổng cộng 16777216 màu).

Tô màu cho ô trong VBA Excel

Mã ví dụ 1:

Sub ColorTest1()

Phạm vi ("A1"). Nội thất.Color = 31569

Phạm vi("A4:D8").Interior.Color = 4569325

Phạm vi("C12:D17").Cells(4).Interior.Color = 568569

Ô(3, 6).Interior.Color = 12659

Đặt mã ví dụ vào mô-đun chương trình của bạn và nhấn nút trên thanh công cụ "Run Sub" hoặc trên bàn phím "F5", con trỏ phải ở bên trong chương trình thực thi. Đang hoạt động bảng tính Excel Các ô và phạm vi được chọn trong mã sẽ xuất hiện với màu sắc thích hợp.

Có một sắc thái thú vị: nếu được gán cho một tài sản .Màu nội thất giá trị âm từ -16777215 đến -1, khi đó màu sẽ tương ứng với giá trị bằng tổng giá trị bảng màu tối đa (16777215) và giá trị âm được chỉ định. Ví dụ: việc điền cả ba ô sau khi thực thi đoạn mã sau sẽ giống nhau:

Thay vì hiển thị thông báo, bạn có thể gán giá trị màu số cho các biến bằng cách khai báo chúng là Dài.

Sử dụng các hằng số được xác định trước

VBA Excel có các hằng số được xác định trước cho các màu tô ô thường được sử dụng:

Màu được gán cho một ô có hằng số được xác định trước trong VBA Excel theo cách tương tự như với giá trị số:

Mã ví dụ 3:

Phạm vi ("A1"). Nội thất.Color = vbGreen

Mô hình màu RGB

Hệ màu RGB là sự kết hợp của ba màu cơ bản có cường độ khác nhau: đỏ, lục và lam. Chúng có thể lấy các giá trị từ 0 đến 255. Nếu tất cả các giá trị bằng 0 thì nó có màu đen, nếu tất cả các giá trị là 255 thì nó có màu trắng.

Bạn có thể chọn một màu và tìm hiểu các giá trị RGB của nó bằng bảng Excel:

Mở ra trong một cửa sổ mới

Trước khi bạn có thể gán màu cho một ô hoặc dải ô bằng giá trị RGB, chúng phải được chuyển đổi thành số thập phân đại diện cho màu. Có một hàm VBA Excel cho việc này, được gọi là RGB.

Mã ví dụ 4:

Phạm vi("A1").Interior.Color = RGB(100, 150, 200)

Property.Interior.ColorIndex của đối tượng Range

Trước khi Excel 2007 ra đời, chỉ có một bảng màu giới hạn để tô nền cho các ô, bao gồm 56 màu, vẫn tồn tại cho đến ngày nay. Mỗi màu trong bảng màu này được gán một chỉ mục từ 1 đến 56. Bạn có thể gán màu cho một ô theo chỉ mục hoặc hiển thị thông báo về màu đó bằng thuộc tính .Interior.ColorIndex.

Màu nền ô trong Microsoft Văn phòng Excelđược xác định bởi thuộc tính ColorIndex của đối tượng Nội thất của ô này.

Ví dụ: màu của ô A1 có thể được đặt như sau: Cells(1, 1).Interior.ColorIndex = 6 (màu vàng)
Theo đó, có thể tính màu của ô như sau: ColorVar = Cells(1, 1).Interior.ColorIndex

Chuỗi hành động phổ biến nhất để hiểu ví dụ này là như sau.

1. Mở Excel.

2. Nhấn Alt + F11

3. Ở bên phải, nhập mã sau:

Bảng tính phụ riêng tư-Kích hoạt()
Ô(1, 1).Interior.ColorIndex = 6
Kết thúc phụ

4. Chuyển về Excel.

5. Chuyển sang tờ thứ 2, rồi lại sang tờ thứ 1. Do đó, màu nền của ô đầu tiên trên trang tính đầu tiên sẽ có màu hơi vàng.

Màu của văn bản không được chỉ định ở bất kỳ định dạng nào (RGB, CMYK, v.v.), mà theo số mà nó nằm trong gamma Excel. Tổng cộng, có 55 màu trong phạm vi và một giá trị được gán cho tính năng tự động cấp nguồn. Tổng cộng, bằng cách sử dụng đặc tính ColorIndex(), có thể đặt 56 giá trị màu. 55 màu này nằm trong bộ sưu tập Colors của đối tượng ActiveWorkbook nên bạn có thể thay đổi chúng nếu muốn.