Đá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)

Nguyễn Hồng Quang

Thành viên GPE Hà Nội
Tham gia ngày
8 Tháng sáu 2007
Bài viết
1,174
Được thích
818
Điểm
860
Tuổi
34
Nơi ở
Hà Nội
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

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
6,612
Được thích
7,695
Điểm
560
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?
 

Ba Tê

Cạo Rồi Khỏi Gội
Tham gia ngày
5 Tháng năm 2009
Bài viết
11,007
Được thích
15,548
Điểm
1,860
Tuổi
60
Nơi ở
An Giang
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
 

Nguyễn Hồng Quang

Thành viên GPE Hà Nội
Tham gia ngày
8 Tháng sáu 2007
Bài viết
1,174
Được thích
818
Điểm
860
Tuổi
34
Nơi ở
Hà Nội
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.
 

snow25

Thành viên gắn bó
Tham gia ngày
24 Tháng bảy 2018
Bài viết
1,922
Được thích
1,665
Điểm
210
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
 

VetMini

Chuyên gia GPE
Tham gia ngày
21 Tháng mười hai 2012
Bài viết
6,612
Được thích
7,695
Điểm
560
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.
 

ThangCuAnh

Thành viên tích cực
Tham gia ngày
1 Tháng mười hai 2017
Bài viết
490
Được thích
373
Điểm
210
Nơi ở
Phờ lây cu
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

Nguyễn Hồng Quang

Thành viên GPE Hà Nội
Tham gia ngày
8 Tháng sáu 2007
Bài viết
1,174
Được thích
818
Điểm
860
Tuổi
34
Nơi ở
Hà Nội
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 ạ.
 
Top