LinDan
Thành viên tiêu biểu
- Tham gia
- 8/2/12
- Bài viết
- 412
- Được thích
- 111
Trời, bài của thày tổng quát, muốn đơn giản cột nào thì chọn cột đó thôi, đơn giản vậy mà tôi không nghĩ được, cảm ơn thày rất nhiều.Chính xác là vậy!
Join(Mảng, dấu phân cách) sẽ nối các phần tử trong mảng với nhau bằng dấu phân cách
----------
Muốn dùng cho cột C thì quét chọn cột C thôi
Ẹc... Ẹc...
Nó hiểu nhờ vào câu nàyTôi thắc mắc là cú pháp: sRowColor SrcRng, 3 thì tại sao máy lại hiểu thành phần thứ 3 (tức là số 3) là đặc tính màu của vùng đó, mà không phải là các đặc tính của vùng như Font chữ, cỡ chữ nhỉ?
Hay là nó hiểu được là do cái từ Color trong câu Sub sRowColor(ByVal SrcRng As Range, ByVal Color As Long?
Sub Test()
Dim i As Long
For i = 1 To 56
Cells(i, 1).Interior.ColorIndex = i
Next
End Sub
Sub có tham số truyền phải tổng quat, tức không được chỉ đến chính xác 1 vùng nào cả (khi nào xài mới "truyền")Nhưng do những cái này chưa biết, nghiên cứu cũng rất tốt, vừa rồi có mạo muội làm thử xem như bài trên nhưng chạy không ra được kết quả, xin thày chỉ cho chỗ sai.
Sub có tham số truyền phải tổng quat, tức không được chỉ đến chính xác 1 vùng nào cả (khi nào xài mới "truyền")
Trong khi đó code của bạn lại có đoạn If DL(i, 3) <> "" Then thế hóa ra "buộc" phải luôn luôn làm việc với cột thứ 3 của Vung à? Vô lý! Nếu thế thì thà rằng viết 1 Sub bình thường cho rồi ---> "Truyền nước biển" làm gì cho mất công
Sub Tomau()
Dim Vung, DL(), i As Long, dongcuoi As Long
Set Dic = CreateObject("Scripting.Dictionary")
dongcuoi = [C65000].End(xlUp).Row
Set Vung = Range("A1:C" & dongcuoi)
DL = Vung.Value
For i = 1 To UBound(DL, 1)
If DL(i, 3) <> "" Then
Tmp = DL(i, 3)
If Not Dic.Exists(Tmp) Then
Dic.Add Tmp, i
Else
Vung.Rows(Dic.Item(Tmp)).Font.ColorIndex = 3
Vung.Rows(i).Font.ColorIndex = 3
End If
End If
Next
End Sub
Ah... không!Như vậy hiểu thế này có đúng không ah:
Những từ Color (được bôi màu đỏ) trong các câu:
+ SrcRng.Rows(Dic.Item(tmp)).Font.ColorIndex = Color.
+ Sub sRowColor(ByVal SrcRng As Range, ByVal Color As Long)
Phải hoàn toàn giống nhau và không được thay thế bằng từ khác? (vì nó là từ cứng được định nghĩa trong VBA)?
Không cần phải là bài toán LỌC DUY NHẤT, miễn sao có yếu tố DUY NHẤT hoặc yếu tố TỒN TẠI, KHÔNG TỒN TẠI trong đó là ta có thể nghĩ đến Dictionary (trong bài tô màu này là xét đến yếu tố tồn tại)Thế mới biết thằng "Đít" này lợi hại gớm, nếu sáng tạo ra thì nó có thể ứng dụng vào giải quyết rất nhiều bài chứ không chỉ đơn thuần là lọc duy nhất.
Thành phần SrcRng.Font.ColorIndex = -4105 thày đưa vào nó có ý nghĩa gì thế?
Đương nhiên đâu tiên vào phải xóa hết các màu sắc nếu có của cell, xong rồi mới tô chứ, đúng không?Thành phần SrcRng.Font.ColorIndex = -4105 thày đưa vào nó có ý nghĩa gì thế?