Thay đổi màu chữ, màu nền tại ô bất kỳ theo điều kiện

Liên hệ QC

khunglongnhi

Thành viên mới
Tham gia
16/6/10
Bài viết
9
Được thích
0
Các bác giúp em trường hợp này với.

Em có 1 bảng excel có đầy đủ dữ liệu trên 1 dòng. Chẳng hạn từ A1 -> K1 đều có dữ liệu.

Bây giờ em muốn là:
- Nhập dữ liệu vào ô M1. Nếu ô này có dữ liệu là "giỏi" thì dữ liệu từ A1:K1 đều đổi sang màu đỏ & có nền màu vàng (bình thường là màu đen và không có màu nền)

Mong được các bác giúp đỡ.
 
Các bác giúp em trường hợp này với.

Em có 1 bảng excel có đầy đủ dữ liệu trên 1 dòng. Chẳng hạn từ A1 -> K1 đều có dữ liệu.

Bây giờ em muốn là:
- Nhập dữ liệu vào ô M1. Nếu ô này có dữ liệu là "giỏi" thì dữ liệu từ A1:K1 đều đổi sang màu đỏ & có nền màu vàng (bình thường là màu đen và không có màu nền)

Mong được các bác giúp đỡ.

Bạn dùng Format _ Coditional formating. Do không có file nên không làm cho bạn được.
 
Các bác giúp em trường hợp này với.

Em có 1 bảng excel có đầy đủ dữ liệu trên 1 dòng. Chẳng hạn từ A1 -> K1 đều có dữ liệu.

Bây giờ em muốn là:
- Nhập dữ liệu vào ô M1. Nếu ô này có dữ liệu là "giỏi" thì dữ liệu từ A1:K1 đều đổi sang màu đỏ & có nền màu vàng (bình thường là màu đen và không có màu nền)
Mong được các bác giúp đỡ.
Bôi đen vùng dữ liệu từ A1 : K1, Chọn Conditional Formatting---> Sau đó làm như hình vẽAnh.jpg
Nghiên cứu thêm thì kích vào hai cái link CF màu đỏ dưới chữ ký của mình.
 
Các bác giúp em trường hợp này với.

Em có 1 bảng excel có đầy đủ dữ liệu trên 1 dòng. Chẳng hạn từ A1 -> K1 đều có dữ liệu.

Bây giờ em muốn là:
- Nhập dữ liệu vào ô M1. Nếu ô này có dữ liệu là "giỏi" thì dữ liệu từ A1:K1 đều đổi sang màu đỏ & có nền màu vàng (bình thường là màu đen và không có màu nền)
- Việc này được diễn ra tự động hoàn toàn ngay khi nhập dữ liệu vào ô M1

Mong được các bác giúp đỡ.
 

File đính kèm

  • doi mau chu theo dieu kien.xlsx
    8.2 KB · Đọc: 312
Các bác giúp em trường hợp này với.

Em có 1 bảng excel có đầy đủ dữ liệu trên 1 dòng. Chẳng hạn từ A1 -> K1 đều có dữ liệu.

Bây giờ em muốn là:
- Nhập dữ liệu vào ô M1. Nếu ô này có dữ liệu là "giỏi" thì dữ liệu từ A1:K1 đều đổi sang màu đỏ & có nền màu vàng (bình thường là màu đen và không có màu nền)
- Việc này được diễn ra tự động hoàn toàn ngay khi nhập dữ liệu vào ô M1

Mong được các bác giúp đỡ.
Bạn xem file thử đúng ý bạn chưa nhé
 

File đính kèm

  • ConFormat.xls
    24.5 KB · Đọc: 449
rất cám ơn viehoai đã giúp đỡ.
Nhưng.......... không đúng ý mình.

Bạn làm rất đúng ý trong 1 vùng định sẵn.
Nhưng khi mình thêm 1 dòng mới thì hiệu ứng không có tác dụng.

Có bạn nào biết cách lập trình VBA về vde này xin chỉ giúp mình.
Mình nghĩ là chỉ có lập trình thì mới làm cho nó tự động hoàn toàn trên sheet.
Mình cũng tìm hiểu nhưng không thấy tài liệu nào chỉ về lập trình VBA trên excel, nêu rõ các hàm để mình sử dụng liền.

Mình thấy cũng có vài bạn cũng đã chỉ cách làm đổi màu chữ, màu nền của ô hiện tại (target)
Mình cũng dùng thủ tục trong selectionchange, nhưng mình không biết cách nào để biết được row, column của đối tượng target được truyền vào thủ tục selectionchange.
Biết được thông số row, column chắc mới set được range mình muốn thay đổi

Mong được các bạn chỉ giúp
 
Cám ơn mọi người và đặc biệt là Viethoai rất nhiều.

Mình đã tiếp cận vấn đề sai và không cần thiết.
Mình thử nghĩ lại theo cách viehoai nói thì mình đã làm được như mình nói. Mình đã làm được điều ấy = VBA.
Hoàn toàn đúng ý mình muốn.
 
Các bạn cho mình xin code được không, File của bạn viehoai không thấy có code vba
 
Đoạn code mình dùng như sau. Bạn nào có cách hay hơn thì chỉ giúp mình nhé.

Private Sub Worksheet_Activate()

Dim i, j, txtColor As Integer
Dim strCheck, tmpTarget As String

j = 300 ' so dong trong data area
txtColor = 48

For i = 2 To j Step 1
tmpTarget = "N" & i
strCheck = Range(tmpTarget).Value

If strCheck = "Giỏi" Then
tmpTarget = "B" & i & ":E" & i
Range(tmpTarget).Font.ColorIndex = txtColor
End If
Next i

End Sub
 
Đoạn code mình dùng như sau. Bạn nào có cách hay hơn thì chỉ giúp mình nhé.

Private Sub Worksheet_Activate()

Dim i, j, txtColor As Integer
Dim strCheck, tmpTarget As String

j = 300 ' so dong trong data area
txtColor = 48

For i = 2 To j Step 1
tmpTarget = "N" & i
strCheck = Range(tmpTarget).Value

If strCheck = "Giỏi" Then
tmpTarget = "B" & i & ":E" & i
Range(tmpTarget).Font.ColorIndex = txtColor
End If
Next i

End Sub

Chào bạn,

kyo thấy có rất nhiều bất ổn trong code của bạn. Ở đây kyo sẽ chỉ bàn về code VBA thôi chứ không bàn về nên dùng cách nào nhé.

Trước tiên thì nếu txtColor của bạn là một hằng số cố định, và nếu code bạn không dài thì bạn nên dùng giá trị hằng số vào thẳng luôn chứ không cần thiết phải tạo một biến để lưu cho nó. Trừ khi code bạn rất dài và bạn muốn có một tập hợp thông số để dễ điều chỉnh, khi đó bạn có thể khởi tạo một biến hằng số.

Cũng tương tự vậy với biến j không cần thiết, và biến tmpTarget cũng vậy.

Nhưng quan trọng hơn chính là vấn đề so sánh biến strCheck với "Giỏi", trong VBA không hiện được Tiếng Việt Unicode và bạn làm vậy theo kyo nghĩ sẽ gây một số bất ổn về sau. Thay vì vậy sao bạn không so sánh trực tiếp If Range(tmpTarget).Value = Range("P1").Value chẳng hạn với ô P1 bạn lưu chữ "Giỏi". Hoặc cũng có thể bạn dùng cách đánh Unicode trong VBA cũng ổn.

Và có một điều nữa là bạn thiết lập không hết, giả sử như bạn thay đổi dữ liệu thì những vùng bạn tô màu sẽ không thay đổi. Thay vì vậy, đáng lẽ bạn cần một so sánh Else để xóa đi thiết lập màu giả sử nó không đúng.

Một điều khác nữa là khi bạn so sánh, bạn nên dùng hàm Ucase chẳng hạn, mục đích là để đưa dữ liệu bạn đồng nhất, vì "Giỏi" thì không giống với "giỏi", bạn cần đưa nó về chẳng hạn như "GIỎI" so với "GIỎI".

Do đó kyo đề nghị bạn một đoạn code thế này, bạn xem thế nào nhé. Tất nhiên đây chỉ là ở mức độ cơ bản, nên đoạn code này vẫn chưa phải là tốt nhất đâu bạn.

PHP:
Private Sub Worksheet_Activate()

Dim i As Long

For i = 2 To 300
    If UCase(Range("M" & i).Value) = UCase("Gi" & ChrW(7887) & "i") Then
        Range("B" & i & ":E" & i).Font.ColorIndex = 48
    Else
        Range("B" & i & ":E" & i).Font.ColorIndex = 1
    End If
Next i

End Sub
 
Lần chỉnh sửa cuối:
Có cách nào đổi màu chỉ chữ G đầu tiên trong chữ Giỏi ko vậy mọi người, Ai biết chỉ giúp mình với ! thank so much
 
Chào anh, em trong diễn đàn. Cho em hỏi có code nào thay đổi màu nền ô có điều kiện theo ngày mà không dùng CF không ạ.
Ví dụ: với các ô có thời gian dưới 7 ngày so với hiện tại thì đổi sang màu đỏ, trên 30 ngày thì màu vàng. Mong được giúp đỡ.
 
Chào anh, em trong diễn đàn. Cho em hỏi có code nào thay đổi màu nền ô có điều kiện theo ngày mà không dùng CF không ạ.
Ví dụ: với các ô có thời gian dưới 7 ngày so với hiện tại thì đổi sang màu đỏ, trên 30 ngày thì màu vàng. Mong được giúp đỡ.
Có chứ, nhưng phải có file.
 
Giả sử ngày tại A1, nếu dưới 7 ngày (bao gồm cả ngày trong tương lai) thì tô đỏ:
PHP:
Sub test()
With Range("A1")
    .Interior.Color = xlNone
    If Date - .Value < 7 Then .Interior.ColorIndex = 3
End With
End Sub
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom