Hỏi về định dạng font (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

matran25251325

Thành viên tiêu biểu
Tham gia
13/1/11
Bài viết
424
Được thích
39
Nhờ GPE em đã học được cách định dạng chữ bằng CF. Nay em muốn hỏi nếu dùng VBA thì viết thế nào? Như file đính kèm em muốn định dạng 2 cột E và I; Ở cột E thì sau khi chạy code chỉ định dạng những đối tượng như Cà Pháo, Mắm Tôm, Thit Luộc và giá trị sum ở cột I thuộc các đối tượng trên. Các đối tượng Cà Pháo 1, Cà Pháo 2.. không ảnh hưởng gì. Mong các anh, các thầy hướng dẫn.
 

File đính kèm

Nhờ GPE em đã học được cách định dạng chữ bằng CF. Nay em muốn hỏi nếu dùng VBA thì viết thế nào? Như file đính kèm em muốn định dạng 2 cột E và I; Ở cột E thì sau khi chạy code chỉ định dạng những đối tượng như Cà Pháo, Mắm Tôm, Thit Luộc và giá trị sum ở cột I thuộc các đối tượng trên. Các đối tượng Cà Pháo 1, Cà Pháo 2.. không ảnh hưởng gì. Mong các anh, các thầy hướng dẫn.
Đưa hàm COUNTIF vào thử xem:
[gpecode=vb]
Private Sub Worksheet_Deactivate()
Dim Rng As Range, iR As Long
Set Rng = Range([E4], [E4].End(4))
For iR = 1 To Rng.Rows.Count
If Application.CountIf(Rng, Rng(iR) & "*") > 1 Then
Rng(iR).Font.ColorIndex = 5
Rng(iR).Font.Italic = True
Rng(iR).Offset(, 4).Font.ColorIndex = 5
Rng(iR).Offset(, 4).Font.Italic = True
Else
Rng(iR).Resize(, 5).ClearFormats
End If
Next iR
End Sub
[/gpecode]
 

File đính kèm

Upvote 0
Nếu dữ liệu ngẫu nhiên thế này thì code sửa sao vậy anh Leo
Nếu vậy thì sửa trong COUNTIF một chút, thay vì COUNTIF cả Rng thì COUNTIF vài dòng thôi, còn nhiều trường hợp khác xảy ra, tùy mình quy định mã thôi:
[gpecode=vb]
Sub font()
Dim Rng As Range, iR As Long
Set Rng = Range([E4], [E4].End(4))
For iR = 1 To Rng.Rows.Count
If Application.CountIf(Rng(iR).Resize(2), Rng(iR) & "*") > 1 Then
Rng(iR).font.ColorIndex = 5
Rng(iR).font.Italic = True
Rng(iR).Offset(, 4).font.ColorIndex = 5
Rng(iR).Offset(, 4).font.Italic = True
Else
Rng(iR).Resize(, 5).ClearFormats
End If
Next iR
End Sub
[/gpecode]
Chú ý đặt tên Sub.
 

File đính kèm

Upvote 0
Cho em hỏi 1 trường hợp cuối là nếu có các khoảng trống thì sao anh?Hic làm phiền anh quá
Cái này thì phải thay đổi cách gán vùng cho biến Rng (lấy từ dưới lên -> End(xlUp) thay cho cách lấy từ trên xuống End(xlDown))
Mã:
Set Rng = Range([E4], [E65535].End(3))
 
Upvote 0
Anh Leo em hỏi gặp trường hợp có thể định dạng những từ mặc định được không? Như file ví dụ thì định dạng những từ Cà Pháo, Mắm Tôm, Thịt Luộc. Còn các trường hợp khác giữ nguyên.
 

File đính kèm

Upvote 0
Anh Leo em hỏi gặp trường hợp có thể định dạng những từ mặc định được không? Như file ví dụ thì định dạng những từ Cà Pháo, Mắm Tôm, Thịt Luộc. Còn các trường hợp khác giữ nguyên.
Đã mặc định, thì có danh sách cụ thể, hoặc có gì đó khác biệt. Bạn nêu rõ hơn về "mặc định". Nếu có danh sách mặc định thì có thể dùng COUNTIF hoặc dò tìm (VLOOKUP của Excel hoặc phương thức Find của VBA).
ví dụ: A1:A4 là danh sách mặc định:
[gpecode=vb]
Sub font()
Dim Rng As Range, iR As Long
Set Rng = Range([E4], [E65535].End(3))
For iR = 1 To Rng.Rows.Count
If Application.CountIf([A1:A4], Rng(iR)) Then
Rng(iR).font.ColorIndex = 5
Rng(iR).font.Italic = True
Rng(iR).font.Bold = True
Rng(iR).Offset(, 3).font.ColorIndex = 5
Rng(iR).Offset(, 3).font.Italic = True
Rng(iR).Offset(, 3).font.Bold = True
Else
Rng(iR).Resize(, 5).ClearFormats
End If
Next iR
End Sub
[/gpecode]
 

File đính kèm

Upvote 0
Anh Leo em hỏi gặp trường hợp có thể định dạng những từ mặc định được không? Như file ví dụ thì định dạng những từ Cà Pháo, Mắm Tôm, Thịt Luộc. Còn các trường hợp khác giữ nguyên.
Nếu tôi hiểu đúng, Bạn thử code này, sai thì thôi nhé.
Không cần từ nào mặc định cả, miễn đó là mục chính, các tên trong mục đó không ảnh hưởng.
[GPECODE=vb]Sub GPE_()
Dim Rng As Range, Cll As Range
Set Rng = Range([E4], [E65536].End(xlUp))
For Each Cll In Rng
If Cll <> Empty And Cll.Offset(, 1) = Empty Then
Cll.Resize(, 5).font.Bold = True
Cll.Resize(, 5).font.ColorIndex = 3
End If
Next Cll
Set Rng = Nothing
End Sub[/GPECODE]
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cách của anh Leo và của thầy BaTe đều oke cả. Cảm ơn anh Leo và Thầy BaTe nhiều. Code thầy bate ngắn gọn và dễ hiểu hơn nhiều cho những thành viên mới bít bò như em}}}}}.
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom