xin các thầy cho em xin bảng quy ước màu trong vba

Liên hệ QC

haikimcuong

Thành viên hoạt động
Tham gia
6/7/10
Bài viết
169
Được thích
36
Như tiêu đề xin các thầy cho em xin bảng quy ước màu trong vba ạ ví dụ màu đỏ tương ứng với số mấy, màu xanh số mấy
em chỉ biết có màu đỏ là 3, màu vàng là 36 hoặc vàng nhạt là 6 thôi còn lại em không biết, Cảm ơn các thầy
 
Như tiêu đề xin các thầy cho em xin bảng quy ước màu trong vba ạ ví dụ màu đỏ tương ứng với số mấy, màu xanh số mấy
em chỉ biết có màu đỏ là 3, màu vàng là 36 hoặc vàng nhạt là 6 thôi còn lại em không biết, Cảm ơn các thầy
Cái này bạn Record Macro là biết mà!
 
Upvote 0
Như tiêu đề xin các thầy cho em xin bảng quy ước màu trong vba ạ ví dụ màu đỏ tương ứng với số mấy, màu xanh số mấy
em chỉ biết có màu đỏ là 3, màu vàng là 36 hoặc vàng nhạt là 6 thôi còn lại em không biết, Cảm ơn các thầy
Bạn có thể thử nghiệm với sub sau
Mã:
Sub LColor()
On Error Resume Next
For i = 1 To 100
    Cells(i, 1).Interior.ColorIndex = i
    Cells(i, 2) = i
Next
End Sub
 
Upvote 0
Đơn giản nhất là dùng hằng VB như vbRed, vbGreen, vbYellow, vbWhite....
 
Upvote 0
Bạn có thể thử nghiệm với sub sau
Mã:
Sub LColor()
[COLOR=#0000ff]Dim i[/COLOR]
[COLOR=#ff0000]'On Error Resume Next[/COLOR]
For i = 1 To [COLOR=#ff0000]56[/COLOR]
    Cells(i, 1).Interior.ColorIndex = i
    Cells(i, 2) = i
Next
End Sub

Chơi cũng ác hén. VBA chỉ có hiểu tới số 56 thôi. Đã vậy còn khuyến mãi dòng On Error...
 
Upvote 0
Chơi cũng ác hén. VBA chỉ có hiểu tới số 56 thôi. Đã vậy còn khuyến mãi dòng On Error...
Lấy đâu ra số 56 để viết code rứa, sao không phải 32, 64, 128, ... chi bằng cho nó chạy thỏa mái, khi nào lỗi thì dừng.
Mã:
Sub LColor()
    Dim i
    On Error GoTo ExitSub
    For i = 1 To 65536
        Cells(i, 1).Interior.ColorIndex = i
        Cells(i, 2) = i
    Next
ExitSub:
    MsgBox i - 1
End Sub
 
Upvote 0
Như tiêu đề xin các thầy cho em xin bảng quy ước màu trong vba ạ ví dụ màu đỏ tương ứng với số mấy, màu xanh số mấy
em chỉ biết có màu đỏ là 3, màu vàng là 36 hoặc vàng nhạt là 6 thôi còn lại em không biết, Cảm ơn các thầy

Tôi dùng 2 Sub đơn giản để thể hiện 56 màu chữ và 56 màu nền như File đính kèm.
 

File đính kèm

  • Color.xls
    45.5 KB · Đọc: 446
Upvote 0
Tôi dùng 2 Sub đơn giản để thể hiện 56 màu chữ và 56 màu nền như File đính kèm.
Em không hiểu code của anh có mang ý nghĩa sư phạm gì hay không nhưng em cảm thấy nó dài quá
Thay vì viết như thế sao mình không dùng vòng lặp vậy anh?
PHP:
Sub mau_font()
Dim r, c, i
For r = 1 To 7
   For c = 1 To 8
      i = i + 1
      Cells(r, c).Font.ColorIndex = i
   Next
Next
End Sub
PHP:
Sub mau_nen()
Dim r, c, i
For r = 1 To 7
   For c = 1 To 8
      i = i + 1
      Cells(r, c).Interior.ColorIndex = i
   Next
Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
To: quanghai1969

Do em nó không hiểu mỗi 1 màu quy ước tương ứng với số mấy nên anh đưa ra 1 ví dụ đến từng Cell để biết cụ thể số của từng màu mà tùy cơ ứng biến vào công việc (em nó nêu: "xin các thầy cho em xin bảng quy ước màu trong vba"), nếu đưa ra ví dụ cao siêu như em thì em nó sẽ bó tay không biết ứng dụng vào từng Cell sẽ như thế nào và sẽ hỏi tiếp.
 
Lần chỉnh sửa cuối:
Upvote 0
Như tiêu đề xin các thầy cho em xin bảng quy ước màu trong vba ạ ví dụ màu đỏ tương ứng với số mấy, màu xanh số mấy
em chỉ biết có màu đỏ là 3, màu vàng là 36 hoặc vàng nhạt là 6 thôi còn lại em không biết, Cảm ơn các thầy

Bạn vào Trang Này để tham khảo nhé.
 
Upvote 0
Em không hiểu code của anh có mang ý nghĩa sư phạm gì hay không nhưng em cảm thấy nó dài quá
Thay vì viết như thế sao mình không dùng vòng lặp vậy anh?

Hi, vẫn còn ngắn hơn

PHP:
Sub Nen()
Dim Cl As Range
For Each Cl In [A1:H7].Cells
Cl.Interior.ColorIndex = Cl.Row * Cl.Column
Next
End Sub
 
Upvote 0
Hi, vẫn còn ngắn hơn

PHP:
Sub Nen()
Dim Cl As Range
For Each Cl In [A1:H7].Cells
Cl.Interior.ColorIndex = Cl.Row * Cl.Column
Next
End Sub

Vậy mới phải chớ anh:
Mã:
Sub Nen()
    Dim Cl As Range
    For Each Cl In [A1:H7].Cells
        Cl = (Cl.Row - 1) * 8 + Cl.Column
        Cl.Interior.ColorIndex = Cl
        Cl.Font.ColorIndex = 1 + Cl.Column 'để số dễ nhìn thôi
    Next
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Vậy mới phải chớ anh:
Mã:
Sub Nen()
    Dim Cl As Range
    For Each Cl In [A1:H7].Cells
        Cl = (Cl.Row - 1) * 8 + Cl.Column
        Cl.Interior.ColorIndex = Cl
        Cl.Font.ColorIndex = 1 + Cl.Column 'để số dễ nhìn thôi
    Next
End Sub

Vậy thôi ta đặt biến i = i + 1 chạy trong vòng lập có phải dễ hiểu không? Nhân chia chia cho rối đầu?
Ẹc.. Ẹc...
 
Upvote 0
Mọi người cho em hỏi là em muốn viết code macro theo điều kiện là tại nếu cột O được tô màu vàng thì cột T sẽ đánh dấu "X". Mình cám ơn các cao nhân


1715594286520.png
 
Upvote 0
Mọi người cho em hỏi là em muốn viết code macro theo điều kiện là tại nếu cột O được tô màu vàng thì cột T sẽ đánh dấu "X". Mình cám ơn các cao nhân
Mình xin dịch sang tiếng Việt đoản văn này nha:
Nếu 1 ô nào đó trên cột O được tô vàng thì ô cùng dòng ở cột 'T' sẽ được đánh dấu;

Nghi vấn cần hỏi lại:
1./ Tô bằng tay hay tô bỡi cách khác, như CF?
2./ Nếu tô bằng tay thì ta cần biết màu vàng đó có chỉ số màu là bi nhiêu? Để thực hiện việc này cần:
→ Xác định dòng cuối cột 'O' có dữ liệu (Ví dụ sẽ gán vô tham biến Rws)
→ Tạo vòng lặp duyệt từ ô đầu có dữ liệu đến ô có chỉ số dòng là Rws
→ Nếu (trong quá trình duyệt) thấy ô ở cột O có màu thì ghi chỉ số màu vô cột 'T' ở dòng tương ứng
& sau đó bạn tự tiếp tục nha!

& chúc thành công!
 
Upvote 0
Cho code này vào Event WorkSheet_Change

If Target.Columns.Count = 1 And Split(Target.Address, "$")(1) = "O" Then
Target.Offset(0, 5).Value = IIf(Target.Interior.ColorIndex = vbYellow, "X", "")
End If
 
Lần chỉnh sửa cuối:
Upvote 0
Mình xin dịch sang tiếng Việt đoản văn này nha:
Nếu 1 ô nào đó trên cột O được tô vàng thì ô cùng dòng ở cột 'T' sẽ được đánh dấu;

Nghi vấn cần hỏi lại:
1./ Tô bằng tay hay tô bỡi cách khác, như CF?
2./ Nếu tô bằng tay thì ta cần biết màu vàng đó có chỉ số màu là bi nhiêu? Để thực hiện việc này cần:
→ Xác định dòng cuối cột 'O' có dữ liệu (Ví dụ sẽ gán vô tham biến Rws)
→ Tạo vòng lặp duyệt từ ô đầu có dữ liệu đến ô có chỉ số dòng là Rws
→ Nếu (trong quá trình duyệt) thấy ô ở cột O có màu thì ghi chỉ số màu vô cột 'T' ở dòng tương ứng
& sau đó bạn tự tiếp tục nha!

& chúc thành công!
Hi bạn, mình run đoạn code này và không chạy được không biết có sai ở đâu, nhờ bạn coi qua giúp mình nhé

Sub MarkXForYellowHighlight()

Dim ws As Worksheet
Dim rngO As Range
Dim cell As Range
Dim lastRow As Long

Set ws = ThisWorkbook.Sheets("BCCT")

lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row

For Each cell In ws.Range("C1:C" & lastRow)
If cell.Interior.Color = RGB(65535, 65535, 0) Then
cell.Offset(0, 14).Value = "X"
End If
Next cell
End Sub
Bài đã được tự động gộp:

Mình xin dịch sang tiếng Việt đoản văn này nha:
Nếu 1 ô nào đó trên cột O được tô vàng thì ô cùng dòng ở cột 'T' sẽ được đánh dấu;

Nghi vấn cần hỏi lại:
1./ Tô bằng tay hay tô bỡi cách khác, như CF?
2./ Nếu tô bằng tay thì ta cần biết màu vàng đó có chỉ số màu là bi nhiêu? Để thực hiện việc này cần:
→ Xác định dòng cuối cột 'O' có dữ liệu (Ví dụ sẽ gán vô tham biến Rws)
→ Tạo vòng lặp duyệt từ ô đầu có dữ liệu đến ô có chỉ số dòng là Rws
→ Nếu (trong quá trình duyệt) thấy ô ở cột O có màu thì ghi chỉ số màu vô cột 'T' ở dòng tương ứng
& sau đó bạn tự tiếp tục nha!

& chúc thành công!
Mình tô vàng bằng tay nè
 
Upvote 0
1./ Bài trước bạn nói là 'duyệt' trên cột 'O' mà bài sau bạn viết code duyệt trên cột 'C'?
2./ Code đó của bạn hình như đang bị lỗi; & như vậy không phải là không chạy được mà chạy sẽ báo lỗi
[Bạn viết thiếu chính xác như vậy để làm gì?
3./ Bạn thử chạy với macro này & coi như là 1 tham khảo cho bạn:
PHP:
Sub ToCacMau()
 Dim J As Integer
 Cells(2, "B").Interior.Color = RGB(655, 655, 0)
 For J = 1 To 55
    With Cells(J, 5)
        .Interior.ColorIndex = J + 1
        .Value = J
    End With
 Next J
End Sub

Thân chào!
 
Upvote 0
Web KT
Back
Top Bottom