Đánh dấu x vào cột I, cho những ô ở cột F và G có .Font.Color là màu xanh (= -1003520)

Liên hệ QC

Nguyễn Hồng Quang

Thành viên GPE Hà Nội
Tham gia
8/6/07
Bài viết
1,203
Được thích
876
Giới tính
Nam
Nghề nghiệp
Kế toán
Như tiêu đề đã nêu. Mình muốn Đánh dấu x vào cột I, cho những ô ở cột F và G có .Font.Color là màu xanh (= -1003520)
Code của mình hiện tại đang gán cho Button12:
Mã:
Sub Button12_Click()
Dim lr As Long
With Sheets("2017+2018+2019")
Sheets("2017+2018+2019").Select
lr = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 5 To lr
    If Cells(i, 6).Font.Color = -1003520 Or _
        Cells(i, 7).Font.Color = -1003520 Then
        Cells(i, 9).Value = "x"
    End If
Next i
End With
End Sub
Nhưng khi chạy code thì không thấy kết quả gì
Nhờ mọi người hỗ trợ
 

File đính kèm

  • Đánh dấu x các ô màu xanh.xlsm
    25.7 KB · Đọc: 8
Bạn sử dụng code VBA bao nhiêu lâu rồi mà có biết:
"With : End With" nói chung có nghĩa là gì, và
tại sao "With WorkSheets.... - End With" nói riêng hay được dùng trong diễn đàn này không?
 
Upvote 0
Như tiêu đề đã nêu. Mình muốn Đánh dấu x vào cột I, cho những ô ở cột F và G có .Font.Color là màu xanh (= -1003520)
Code của mình hiện tại đang gán cho Button12:
Mã:
Sub Button12_Click()
Dim lr As Long
With Sheets("2017+2018+2019")
Sheets("2017+2018+2019").Select
lr = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 5 To lr
    If Cells(i, 6).Font.Color = -1003520 Or _
        Cells(i, 7).Font.Color = -1003520 Then
        Cells(i, 9).Value = "x"
    End If
Next i
End With
End Sub
Nhưng khi chạy code thì không thấy kết quả gì
Nhờ mọi người hỗ trợ
Bạn Copy 1 ô font màu chuẩn vào ô I4 rồi thử Sub này coi sao.
PHP:
Option Explicit

Public Sub sGpe()
Dim I As Long, R As Long, Mau
    Mau = Range("I4").Font.Color
    R = Range("F1000000").End(xlUp).Row
For I = 5 To R
    If Cells(I, 6).Font.Color = Mau _
        Or Cells(I, 7).Font.Color = Mau Then
        Cells(I, 9) = "x"
    End If
Next I
End Sub
 
Upvote 0
Bạn sử dụng code VBA bao nhiêu lâu rồi mà có biết:
"With : End With" nói chung có nghĩa là gì, và
tại sao "With WorkSheets.... - End With" nói riêng hay được dùng trong diễn đàn này không?
Em cũng chỉ hiểu hình thức thôi. Còn bản chất em cũng chưa có nắm được.
 
Upvote 0
Như tiêu đề đã nêu. Mình muốn Đánh dấu x vào cột I, cho những ô ở cột F và G có .Font.Color là màu xanh (= -1003520)
Code của mình hiện tại đang gán cho Button12:
Mã:
Sub Button12_Click()
Dim lr As Long
With Sheets("2017+2018+2019")
Sheets("2017+2018+2019").Select
lr = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 5 To lr
    If Cells(i, 6).Font.Color = -1003520 Or _
        Cells(i, 7).Font.Color = -1003520 Then
        Cells(i, 9).Value = "x"
    End If
Next i
End With
End Sub
Nhưng khi chạy code thì không thấy kết quả gì
Nhờ mọi người hỗ trợ
Bạn thử cái này.
MÌnh nghĩ code của bạn không ra kết quả ở chỗ Bạn chọn sai màu để kiểm tra.Bạn xem code có đúng không nhé.
Mã:
Sub Button12_Click()
Dim lr As Long, mau As Long
With Sheets("2017+2018+2019")
'mau = .Range("F7").Font.ColorIndex
lr = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 5 To lr
    If .Cells(i, 6).Font.ColorIndex = 33 Or .Cells(i, 7).Font.ColorIndex = 33 Then
        .Cells(i, 9).Value = "x"
    Else
        .Cells(i, 9).Value = Empty
    End If
Next i
End With
End Sub
 
Upvote 0
Em cũng chỉ hiểu hình thức thôi. Còn bản chất em cũng chưa có nắm được.
With là từ khoá mở một vùng lĩnh vực của một đối tượng.
Trong vùng lĩnh vực này, tất cả các thuộc tính hoặc phương thức bắt đầu bằng dấu chấm coi như là thuộc tính/phương thức của đối tượng đó.
Nói cách khác:
With SheetA
.Range("A1") = 1
Range("A1") = 1
End With
Sẽ tương đương với:
SheetA.Range("A1") = 1 ' Range này có dấu chấm cho nên nó là thuộc tính của đối tượng xác định theo With
ActiveSheet.Range("A1") = 1 ' Range này không có dấu chấm cho nên nó là thuọc tính của đối tượng mặc định, tức là ActiveSheet

Bạn xem kỹ lại code của mình.
 
Upvote 0
Bạn thử lại code này xem sao:
Mã:
Option Explicit

Public Sub Button12_Click()
    Dim lr As Long, I As Long
    Dim sht As Worksheet
   
    Set sht = Sheets("2017+2018+2019")
    With sht
        lr = .Cells(.Rows.Count, "A").End(xlUp).Row
        For I = 5 To lr
            If .Cells(I, 6).Font.Color = RGB(0, 176, 240) Or .Cells(I, 7).Font.Color = RGB(0, 176, 240) Then
                .Cells(I, 9).Value = "X"
            End If
        Next I
    End With
End Sub
 

File đính kèm

  • 1.png
    1.png
    21.5 KB · Đọc: 6
Upvote 0
Bạn thử cái này.
MÌnh nghĩ code của bạn không ra kết quả ở chỗ Bạn chọn sai màu để kiểm tra.Bạn xem code có đúng không nhé.
Mã:
Sub Button12_Click()
Dim lr As Long, mau As Long
With Sheets("2017+2018+2019")
'mau = .Range("F7").Font.ColorIndex
lr = .Cells(.Rows.Count, "A").End(xlUp).Row
For i = 5 To lr
    If .Cells(i, 6).Font.ColorIndex = 33 Or .Cells(i, 7).Font.ColorIndex = 33 Then
        .Cells(i, 9).Value = "x"
    Else
        .Cells(i, 9).Value = Empty
    End If
Next i
End With
End Sub
Cảm ơn snow25; code của bạn đúng rồi.
Mình code là .Font.Color = -1003520 vì trước đó mình Record Macro để lấy giá trị màu của 1 ô excel thì thấy trong màn hình VBE của excel ghi là -1003520. Nhưng khi đưa vào code thì lại sai.
Bài đã được tự động gộp:

Bạn thử lại code này xem sao:
Mã:
Option Explicit

Public Sub Button12_Click()
    Dim lr As Long, I As Long
    Dim sht As Worksheet
 
    Set sht = Sheets("2017+2018+2019")
    With sht
        lr = .Cells(.Rows.Count, "A").End(xlUp).Row
        For I = 5 To lr
            If .Cells(I, 6).Font.Color = RGB(0, 176, 240) Or .Cells(I, 7).Font.Color = RGB(0, 176, 240) Then
                .Cells(I, 9).Value = "X"
            End If
        Next I
    End With
End Sub
Code của bạn đúng rồi và cũng rất cảm ơn bạn vì đã chỉ cho mình cách để tìm ra chỉ số màu trong các tình huống tương tự
Bài đã được tự động gộp:

Bạn Copy 1 ô font màu chuẩn vào ô I4 rồi thử Sub này coi sao.
PHP:
Option Explicit

Public Sub sGpe()
Dim I As Long, R As Long, Mau
    Mau = Range("I4").Font.Color
    R = Range("F1000000").End(xlUp).Row
For I = 5 To R
    If Cells(I, 6).Font.Color = Mau _
        Or Cells(I, 7).Font.Color = Mau Then
        Cells(I, 9) = "x"
    End If
Next I
End Sub
Cảm ơn anh Ba Tê. Code của anh đúng rồi ạ.
 
Upvote 0
Web KT
Back
Top Bottom