VBA Đổi màu chữ khi thỏa điều kiện - Xin Giúp đỡ

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

Hongduc39hnk

Thành viên mới
Tham gia
2/1/23
Bài viết
6
Được thích
2
Hiện tại Em đang cần làm 1 form như sau mà mò hoài ko viết được code:

Em có 4 cột B, C, D, E
Khi nhập đủ giá trị vào 4 cột cùng 1 dòng thì những giá trị cùng 1 dòng đó sẽ đổi màu( vi dụ xanh dương), còn nếu 1 trong 4 cột chưa nhập giá trị thì không đổi màu

Mọi người ai giúp em với, Xin cảm ơn Ạ
 

File đính kèm

  • File.xlsx
    9.1 KB · Đọc: 16
Bạn thử trãi nghiệm với con macro sự kiện này xem sao:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Rws As Long, Dem As Integer
 Dim Rng As Range, Cls As Range
 
 Rws = 2 * Sheet1.UsedRange.Rows.Count
 Set Rng = Cells(Target.Row, "B").Resize(, 4)
 If Not Intersect(Target, [B2].Resize(Rws, 4)) Is Nothing Then
    Rng.Interior.ColorIndex = 0
    For Each Cls In Rng
        Dem = 1 + Dem            
        If Cls.Value = "" Then
            Cls.Interior.ColorIndex = 35+dem
            Exit Sub
        End If
    Next Cls
    Rng.Interior.ColorIndex = 35
 End If
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn thử trãi nghiệm với con macro sự kiện này xem sao:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim Rws As Long, Dem As Integer
 Dim Rng As Range, Cls As Range
 
 Rws = 2 * Sheet1.UsedRange.Rows.Count
 Set Rng = Cells(Target.Row, "B").Resize(, 4)
 If Not Intersect(Target, [B2].Resize(Rws, 4)) Is Nothing Then
    Rng.Interior.ColorIndex = 0
    For Each Cls In Rng
        If Cls.Value = "" Then
            Dem = 1 + Dem:              Cls.Interior.ColorIndex = 35+dem
            Exit Sub
        End If
    Next Cls
    Rng.Interior.ColorIndex = 35
 End If
End Sub
Code này của bạn cũng hay. Nhưng mà tô màu thì tô ở cell, mình đang cần tô màu value trong cell. Dù sao cám ơn bạn rất nhiều, để mình mò chỉnh code chuyển thành tô màu cho value xem đc không
 
Upvote 0
Khi nhập đủ giá trị vào 4 cột cùng 1 dòng thì những giá trị cùng 1 dòng đó sẽ đổi màu( vi dụ xanh dương),

Bạn có thể dùng định dạng có điều kiện với công thức:

=COUNTA($B2:$E2)=4

Hoặc tổng quát hơn:

=COUNTA($B2:$E2)=COLUMNS($B2:$E2)

Thử nhập thêm hoặc xóa dữ liệu trong bảng để kiểm tra công thức.

.
 

File đính kèm

  • File.xlsx
    10 KB · Đọc: 3
Upvote 0
Code này của bạn cũng hay. Nhưng mà tô màu thì tô ở cell, mình đang cần tô màu value trong cell. Dù sao cám ơn bạn rất nhiều, để mình mò chỉnh code chuyển thành tô màu cho value xem đc không
Này là bạn chưa biết dùng vba rồi. Nếu biết thì chỉ cần biến tấu code mẫu đó theo ý mình được ngay. Theo mình bài này có thể dùng condition formatting được, không cần dùng code
 
Upvote 0
Conditional Formatting VS Event Handling (using VBA):
Cả hai đều làm năng file.
Cái thứ nhất tự động nằm bên trong. Chỉ làm hơi chậm lúc mở ra. Và Excel phải xem lại mõi lần bảng tính thay đổi. Tuy nhiên, code này là code bên trong Excel được chuyên gia viết bằng ngôn ngữ tối ưu.
Cái thứ hai đăt code vào sự kiện.
- Buộc file phải là loại chứa macro (không thể xlsx)
- Buộc code phải chạy mỗi jhi có thay đổi trong bảng tính (code chạy ít nhất là cho đến khi xét ra không đúng range cần thiết).
- Code VBA là code chạy chậm.
 
Upvote 0
Code này của bạn cũng hay. Nhưng mà tô màu thì tô ở cell, mình đang cần tô màu value trong cell. Dù sao cám ơn bạn rất nhiều, để mình mò chỉnh code chuyển thành tô màu cho value xem đc không
Dùng đỡ củ chuối này:

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lr&, rng As Range
lr = Cells(Rows.Count, "A").End(xlUp).Row
If Intersect(Target, Range("B2:E" & lr)) Is Nothing Then Exit Sub
Set rng = Range(Cells(Target.Row, "B"), Cells(Target.Row, "E"))
If WorksheetFunction.CountA(rng) = 4 Then rng.Font.ColorIndex = 23
End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom