Triển khai macro VBA là phương pháp hiệu quả, nhanh nhất và an toàn nhất để chạy bất kỳ thao tác nào trong Excel. Bài viết này sẽ chỉ cho bạn nếu màu chữ trong bộ dữ liệu là đỏ thì cách lấy kết quả nhất định trong Excel dùng VBA.
Tải xuống Sổ làm việc
Bạn có thể tải xuống sổ làm việc Excel thực hành miễn phí từ đây.
6 Phương pháp Kiểm tra Nếu Màu chữ là Đỏ thì Trả về Kết quả nhất định dùng VBA trong Excel
Xem bộ dữ liệu dưới đây có một số giá trị có màu chữ đỏ. Phần này thảo luận quy trình từng bước nếu màu chữ đỏ thì cách lấy kết quả nhất định trong Excel.
1. Nếu Màu chữ là Đỏ thì Trả về Từ nhất định trong Excel
Chúng ta muốn trả về Có (Yes) nếu màu chữ đỏ và Không (No) nếu không phải đỏ. Hãy xem cách làm với Excel VBA.
Các bước:
- Nhấn Alt + F11 hoặc đi tab Developer -> Visual Basic mở Trình soạn thảo Visual Basic.
- Trong cửa sổ mã, từ thanh menu, nhấp Chèn (Insert) -> Mô-đun (Module).
- Sao chép mã sau và dán vào cửa sổ mã.
Function FontColorRed(target As Range) Application.Volatile If target.Font.Color = 255 Then FontColorRed = "Yes" Else FontColorRed = "No" End If End Function
Đây không phải Sub Procedure cho chương trình VBA chạy, đây là tạo Hàm do người dùng định nghĩa (UDF - User Defined Function). Vì vậy, sau khi viết mã, thay vì nhấp nút Chạy (Run) từ thanh menu, hãy nhấp Lưu (Save).
- Quay lại trang tính cần thiết và viết hàm vừa tạo bằng mã VBA (Hàm FontColorRed ở dòng đầu mã) và trong ngoặc của hàm FontColorRed, truyền số tham chiếu ô (cell reference) muốn chuyển (trường hợp này truyền Ô C5).
Công thức cuối cùng:
=FontColorRed(C5)
- Nhấn Enter.
Bạn nhận Có (Yes) nếu màu chữ ô C5 đỏ, ngược lại nhận Không (No). Trường hợp này màu chữ ô C5 không đỏ, nên nhận Không (No).
- Kéo hàng xuống bằng Fill Handle áp dụng UDF cho các ô còn lại và nhận Có (Yes) bên cạnh ô chứa chữ màu đỏ.
2. Trả về Mã màu (Color Code) nếu Màu chữ là Đỏ
Ở đây học cách trích xuất mã màu dựa trên màu chữ đỏ trong Excel với VBA.
Các bước:
- Cách tương tự, mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Mô-đun trong cửa sổ mã.
- Trong cửa sổ mã, sao chép mã sau và dán vào.
Function ColorCode(rng As Range) ColorCode = rng.Font.ColorIndex End Function
- Gọi UDF ColorCode từ bộ dữ liệu, truyền số tham chiếu ô (ví dụ C5) làm đối số, nhấn Enter.
Bạn nhận mã màu liên quan làm giá trị trả về.
- Kéo hàng xuống bằng Fill Handle áp dụng UDF cho các ô còn lại lấy mã màu chữ đỏ.
3. Nếu Màu chữ là Đỏ thì Trả về Chỉ số (Index) trong Excel
Học cách trả về số chỉ số dựa trên màu chữ đỏ trong Excel với VBA.
Các bước:
- Mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Mô-đun.
- Sao chép mã sau vào cửa sổ mã.
Function IndexColor(cell As Range) IndexColor = cell.Font.Color End Function
- Gọi UDF IndexColor, truyền tham chiếu ô (ví dụ C5), nhấn Enter.
Bạn nhận số chỉ số liên quan của màu chữ làm giá trị trả về.
- Kéo hàng xuống áp dụng UDF cho các ô còn lại lấy chỉ số màu chữ đỏ.
Ô chứa chữ màu đỏ sẽ trả về 255 vì chỉ số màu đỏ (red) là 255.
4. Trả về Mã RGB nếu Màu chữ là Đỏ trong Excel
Học cách lấy mã RGB dựa trên màu chữ đỏ trong Excel với VBA.
Các bước:
- Mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Mô-đun.
- Sao chép mã sau vào cửa sổ mã.
Function FontRGB(cell As Range) Dim iColorIndex As Long Dim iColor As Variant iColorIndex = cell.Font.Color iColor = iColorIndex Mod 256 iColor = iColor & ", " iColor = iColor & (iColorIndex \ 256) Mod 256 iColor = iColor & ", " iColor = iColor & (iColorIndex \ 256 \ 256) Mod 256 FontRGB = iColor End Function
- Gọi UDF FontRGB, truyền tham chiếu ô (ví dụ C5), nhấn Enter.
Bạn nhận mã RGB liên quan của màu chữ làm giá trị trả về.
- Kéo hàng xuống áp dụng UDF cho các ô còn lại lấy mã RGB màu chữ đỏ.
Ô chứa chữ màu đỏ trả về 255,0,0 vì mã RGB màu đỏ là 255,0,0.
5. Nếu Màu chữ là Đỏ thì Làm nổi bật Ô (Highlight)
Nếu muốn làm nổi bật ô chứa chữ màu đỏ, tiếp tục đọc để biết cách.
Các bước:
- Mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Mô-đun.
- Sao chép mã sau vào cửa sổ mã.
Sub HighlightCell() Set ws = Sheets("Highlight") 'set the worksheet For r = 1 To 104 For c = 1 To 36 If (ws.Cells(r, c).Font.Color = 255) Then 'set the desired color index ws.Cells(r, c).Interior.ColorIndex = 34 End If Next c Next r End Sub
Mã đã sẵn sàng chạy.
- Nhấn F5 hoặc từ menu chọn Run -> Run Sub/UserForm. Có thể nhấp biểu tượng Play nhỏ thanh menu con để chạy macro.
Bạn sẽ thấy ô có chữ màu đỏ giờ được làm nổi bật.
6. Thay đổi Màu chữ Nếu Màu chữ là Đỏ
Nếu muốn đổi màu chữ đỏ về màu mặc định, làm theo các bước dưới.
Các bước:
- Mở Trình soạn thảo Visual Basic từ tab Developer và Chèn Mô-đun.
- Sao chép mã sau vào cửa sổ mã.
Sub ChangeFontColor() With Application.FindFormat.Font .Subscript = False .Color = 255 .TintAndShade = 0 End With With Application.ReplaceFormat.Font .Subscript = False .ColorIndex = xlAutomatic .TintAndShade = 0 End With Cells.Replace What:="", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=True, ReplaceFormat:=True End Sub
Mã đã sẵn sàng chạy.
- Chạy (Run) macro.
Giá trị có màu chữ đỏ giờ đã chuyển về màu chữ mặc định.
Kết luận
Bài viết này chỉ cho bạn nếu màu chữ giá trị trong bộ dữ liệu là đỏ thì cách lấy kết quả nhất định trong Excel dùng VBA. Hy vọng bài viết rất hữu ích. Thoải mái hỏi nếu có thắc mắc.
Có thể bạn quan tâm
- VBA xóa ký tự khỏi Chuỗi trong Excel (7 Phương pháp)
- Cách dùng VBA xóa Hàng trống trong Excel
- VBA Macro chèn Hàng trong Excel theo Tiêu chí (4 Phương pháp)
- Cách Đếm hàng với VBA trong Excel (5 Cách tiếp cận)
- VBA xóa Toàn bộ hàng dựa trên Giá trị ô trong Excel (3 Phương pháp)