Hàm sum màu nền và màu chữ lỗi! (1 người xem)

  • Thread starter Thread starter pjsoga
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

pjsoga

Thành viên chính thức
Tham gia
31/3/11
Bài viết
58
Được thích
1
Chào các anh chị em diễn đàn.
Em có 1 file cộng tồng các số theo màu phông nên và phông chữ được chỉnh sửa từ file gốc từ cộng theo màu nền. Nhưng khi áp dụng thì chỉ đúng với 1 số màu. Trong file attach em gửi là màu vàng và màu tím là đúng, các màu khác kết quả là sai.
Vậy các bác/chú/cô/anh/chị/em nào đã gặp qua trường hợp này chỉ giúp và sửa giúp em với ạ.
Em xin cảm ơn nhiều nhiều ạ.
 

File đính kèm

Chào các anh chị em diễn đàn.
Em có 1 file cộng tồng các số theo màu phông nên và phông chữ được chỉnh sửa từ file gốc từ cộng theo màu nền. Nhưng khi áp dụng thì chỉ đúng với 1 số màu. Trong file attach em gửi là màu vàng và màu tím là đúng, các màu khác kết quả là sai.
Vậy các bác/chú/cô/anh/chị/em nào đã gặp qua trường hợp này chỉ giúp và sửa giúp em với ạ.
Em xin cảm ơn nhiều nhiều ạ.
Bạn sửa điều kiện:
PHP:
(rCell.Interior.ColorIndex And rCell.Font.ColorIndex) = lCol
thành:
PHP:
(rCell.Interior.ColorIndex = rColor.Interior.ColorIndex) And (rCell.Font.ColorIndex = rColor.Font.ColorIndex)
Thêm nữa, tại chỗ cộng dồn giá trị (SUM=True) cần gì đến WorksheetFunction, chỉ cần vResult = vResult + rCell là được rồi.
 
Upvote 0
Thank bác đã quan tâm. Bác có thể gửi cho em xin file hoàn chỉnh luôn không ạ. Em băt đầu học VBA nên chưa rõ.
 
Upvote 0
Thank bác đã quan tâm. Bác có thể gửi cho em xin file hoàn chỉnh luôn không ạ. Em băt đầu học VBA nên chưa rõ.
Thì bạn cứ nhấn Alt+F11, tìm đến chỗ có dòng lệnh như trên và thay thế như cách tôi đã trình bày là được thôi chứ khó gì.
 
Upvote 0
không được bác ơi! Nó báo lỗi. Làm phiền bác gửi lại cho em đầy đủ code được không? Thank bác!
 
Upvote 0
không được bác ơi! Nó báo lỗi. Làm phiền bác gửi lại cho em đầy đủ code được không? Thank bác!

Sửa lại đây:
Mã:
Function ColorFunction(ByVal rColor As Range, ByVal rRange As Range, Optional ByVal SUM As Boolean) As Double
  Dim rCel As Range, bChk As Boolean, dResult As Double
  On Error Resume Next
  Application.Volatile
  For Each rCel In rRange
    bChk = (rCel.Interior.ColorIndex = rColor.Interior.ColorIndex) And (rCel.Font.ColorIndex = rColor.Font.ColorIndex)
    If bChk Then dResult = dResult + IIf(SUM, rCel.Value, 1)
  Next
  ColorFunction = dResult
End Function
--------------
Thật ra code này cũng chưa phải là hay lắm
Để ý trong VBA:
- Nếu ta gõ Sheets(1) thì VBA tự biết con số 1 chính là chỉ số Index
- Nếu ta gõ Sheets("ABC") thì VBA tự biết chữ ABC chính là TÊN SHEET
Vậy nên tôi cũng có ý định viết hàm Color theo kiểu trên. Tức biến rColor, nếu ta viết là 1 con số nào đó thì code phải tự biết đấy là chỉ số màu (ColorIndex)... còn nếu rColor là 1 cell nào đó thì code sẽ lấy ColorIndex của cell làm mẫu màu
(nghĩ thế nhưng chưa có nhu cầu nên... lười)
 
Lần chỉnh sửa cuối:
Upvote 0
Funtion chay ok rồi ạ. Cháu cám ơn chú rất nhiều ạ.
 
Upvote 0

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

Back
Top Bottom