Robin hỏi liệu có cách nào để sử dụng khả năng định dạng có điều kiện của Excel để thay đổi phông chữ được sử dụng trong một ô hoặc để thay đổi kích thước phông chữ trong một ô hay không. Câu trả lời ngắn gọn là không, điều đó không thể được thực hiện — ít nhất là không với định dạng có điều kiện. (Các điều khiển cho phép bạn chỉ định tên và kích thước phông chữ được chuyển sang màu xám trong hộp thoại định dạng được sử dụng với định dạng có điều kiện.)

Tuy nhiên, bạn có thể sử dụng macro để kiểm tra nội dung ô và thực hiện các thay đổi về hình thức của ô. Hãy xem xét macro sau đây, nó kiểm tra bất kỳ ô nào bạn đã chọn khi bạn chạy macro. Nếu bất kỳ ô nào có độ dài hơn hai ký tự hoặc giá trị lớn hơn 10, thì phông chữ của ô đó sẽ bị thay đổi.

Sub DoReformat()

Dim rCell As Range

For Each rCell In Selection.Cells         If Len(rCell.Text) > 2 Or _           Val(rCell.Value) > 10 Then             rCell.Font.Name = "Arial"

rCell.Font.Size = 16         Else             rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12         End If     Next End Sub

Để sử dụng macro, chỉ cần chọn các ô bạn muốn thay đổi và sau đó chạy macro. Nếu bạn muốn định dạng thay đổi tự động hơn, thì bạn có thể kiểm tra macro để xem liệu thay đổi có được thực hiện trong một phạm vi ô nhất định hay không:

Private Sub Worksheet_Calculate()

Dim rng As Range     Dim rCell As Range

Set rng = Range("A1:A10")



For Each rCell In rng         If Len(rCell.Text) > 2 Or _           Val(rCell.Value) > 10 Then             rCell.Font.Name = "Arial"

rCell.Font.Size = 16         Else             rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12         End If     Next End Sub

Macro này, khi được thêm vào đối tượng trang tính, sẽ chạy mỗi khi trang tính được tính toán lại. Nó kiểm tra phạm vi A1: A10, áp dụng các thử nghiệm tương tự như trong macro trước đó. Kết quả là định dạng của các ô được kiểm tra và thay đổi liên tục. Để macro kiểm tra một phạm vi khác, chỉ cần thay đổi địa chỉ được gán cho biến rng gần phần đầu của macro.

Một nhược điểm của macro này là nó có thể bị chậm nếu bạn có một phạm vi rất lớn để nó kiểm tra. Nó sẽ diễn ra rất nhanh nếu bạn đang kiểm tra A1: A10 (mười ô), nhưng có thể chậm hơn nhiều nếu bạn liên tục kiểm tra B2: N465 (hơn 6.000 ô). Trong trường hợp đó, bạn có thể muốn thiết kế macro để macro chạy bất cứ khi nào trang tính được thay đổi, nhưng chỉ thực hiện hành động nếu thay đổi được thực hiện đối với một ô trong phạm vi mục tiêu của bạn. Phiên bản sau cũng được thêm vào đối tượng bảng tính:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim rCell As Range

If Union(Target, Range("A1:A10")).Address = _       Range("A1:A10").Address Then         Application.EnableEvents = False         For Each rCell In Target             If Len(rCell.Text) > 2 Or _               Val(rCell.Value) > 10 Then                 rCell.Font.Name = "Arial"

rCell.Font.Size = 16             Else                 rCell.Font.Name = "Times New Roman"

rCell.Font.Size = 12             End If         Next         Application.EnableEvents = True     End If End Sub

Macro sử dụng hàm Union để kiểm tra xem các ô đã thay đổi (được chuyển tới trình xử lý sự kiện trong biến Target) có trùng lặp với phạm vi bạn muốn kiểm tra hay không. Nếu đúng, thì việc kiểm tra được thực hiện trên các ô trong phạm vi Mục tiêu.

Một điều cần lưu ý với các macro ảnh hưởng đến định dạng là nếu bạn áp dụng định dạng có điều kiện cho một ô cũng được kiểm tra bởi macro, thì việc định dạng theo định dạng có điều kiện sẽ được ưu tiên hơn định dạng trong macro. Nếu macro của bạn đang thay đổi tên phông chữ và kích thước phông chữ, đây không phải là mối lo ngại lớn vì định dạng có điều kiện sẽ không ảnh hưởng đến các thuộc tính này. Tuy nhiên, nếu bạn thay đổi macro của mình để cũng thay đổi một thuộc tính định dạng khác — chẳng hạn như màu ô — và thuộc tính đó cũng được thay đổi theo định dạng có điều kiện, thì macro sẽ không giống như đã làm bất cứ điều gì vì Excel sử dụng định dạng có điều kiện. đối với những gì macro làm.

_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 (2380) áp dụng cho Microsoft Excel 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Excel (Excel 2007 trở lên) tại đây: