Xóa dữ liệu trong cell không có tô màu trong vùng được chọn (1 người xem)

Liên hệ QC

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

luckyboy1310

Thành viên mới
Tham gia
10/3/09
Bài viết
28
Được thích
0
Dear các anh chị.

Em đang gặp 1 vấn đề nhỏ như trong file đính kèm. Em tìm không thấy hàm nào trả về giá trị màu nền của cell nên mạo muội hỏi xin các anh chị chỉ bảo cho em code VB để giải quyết vấn đề trên.

Em cảm ơn ạ.
 

File đính kèm

Dear các anh chị.

Em đang gặp 1 vấn đề nhỏ như trong file đính kèm. Em tìm không thấy hàm nào trả về giá trị màu nền của cell nên mạo muội hỏi xin các anh chị chỉ bảo cho em code VB để giải quyết vấn đề trên.

Em cảm ơn ạ.
Public Sub GPE()
Dim Cll As Range
For Each Cll In Selection
If Cll.Interior.ColorIndex < 0 Then Cll.ClearContents
Next
End Sub

Tô chọn vùng, xong Run code, hay gán nó vào nút bấm.
 
Upvote 0
Dạ em cảm ơn anh rất nhiều. Nhưng anh ơi có cách nào gán vùng vào thẳng trong code luôn không anh(khỏi phải mỗi lần làm là phải tô đen vùng chọn). Vì data của em không cố định, nên mổi lần làm em sẽ chọn vùng nhất định rồi gán nó vào nút lun.

VD: Trong file đính kèm vùng chọn của em là B5:F12
 
Upvote 0
Dear các anh chị.

Em đang gặp 1 vấn đề nhỏ như trong file đính kèm. Em tìm không thấy hàm nào trả về giá trị màu nền của cell nên mạo muội hỏi xin các anh chị chỉ bảo cho em code VB để giải quyết vấn đề trên.

Em cảm ơn ạ.
Bạn có thể làm cách khác:
Bước 1: Gõ Ctrl+H, chọn Options
Bước 2: Format\ Pattens\ Color\ No Color \ OK
Bước 3: Replace with: (Để trống) \Replace All \OK
Xong.
 
Lần chỉnh sửa cuối:
Upvote 0
Dạ em cảm ơn anh rất nhiều. Nhưng anh ơi có cách nào gán vùng vào thẳng trong code luôn không anh(khỏi phải mỗi lần làm là phải tô đen vùng chọn). Vì data của em không cố định, nên mổi lần làm em sẽ chọn vùng nhất định rồi gán nó vào nút lun.

VD: Trong file đính kèm vùng chọn của em là B5:F12

Thì thay cái Selection bằng Range("B5:F12"), Không cần chọn vùng nữa.
 
Upvote 0
Bạn có thể làm cách khác:
Bước 1: Gõ Ctrl+H, chọn Options
Bước 2: Format\ Pattens\ Color\ No Color \ OK
Bước 3: Replace with: (Để trống) \Replace All \OK
Xong.

Cách của anh chỉ xài được khi dữ liệu trong cell giống nhau. Nếu Khác nhau thì nó po tay... Không biết em có làm đúng theo cách anh không nhưng khi test thử thì nó giống như em nói vậy đó
 
Upvote 0
Với 60 cột và trên 300 dòng thì code chạy chậm lắm anh. Có cách nào để vòng lặp mình nó nhanh hơn tý được không anh
Bạn thử đoạn code này xem sao
Mã:
Public Sub chuot0106()
Dim i As Long, j As Long
Dim Data As Range, Kq()
Set Data = Sheet1.Range("F4:BM386")
ReDim Kq(1 To Data.Rows.Count, 1 To Data.Columns.Count)
For i = 1 To Data.Rows.Count
For j = 1 To Data.Columns.Count
If mamau(Data(i, j)) = 1 Then
Kq(i, j) = ""
Else
Kq(i, j) = Data(i, j)
End If
Next j
Next i
Sheet1.Range("F4").Resize(Data.Rows.Count, Data.Columns.Count) = Kq
End Sub
Public Function mamau(rng As Range) As Long
mamau = rng.Font.ColorIndex
End Function
 
Lần chỉnh sửa cuối:
Upvote 0
ở #2 dùng
Mã:
[COLOR=#000000]Cll.Interior.ColorIndex[/COLOR]

và ở #10 dùng

Mã:
[COLOR=#000000]rng.Font.ColorIndex[/COLOR]

theo lý thuyết logic thì không thể có 2 người cùng làm đúng --=0--=0--=0
 
Upvote 0
ở #2 dùng
Mã:
[COLOR=#000000]Cll.Interior.ColorIndex[/COLOR]

và ở #10 dùng

Mã:
[COLOR=#000000]rng.Font.ColorIndex[/COLOR]

theo lý thuyết logic thì không thể có 2 người cùng làm đúng --=0--=0--=0
Rất tiếc trong trong trường hợp này bạn mới là người khồng đúng!--=0--=0--=0. Vì bài #2 viết code cho trường hợp File ở #1, còn bài của tôi viết cho #9 và cả 2 code đều đúng với yêu cầu của tác giả ở mỗi File.
 
Upvote 0
Bạn thử đoạn code này xem sao
Mã:
Public Sub chuot0106()
Dim i As Long, j As Long
Dim Data As Range, Kq()
Set Data = Sheet1.Range("F4:BM386")
ReDim Kq(1 To Data.Rows.Count, 1 To Data.Columns.Count)
For i = 1 To Data.Rows.Count
For j = 1 To Data.Columns.Count
If mamau(Data(i, j)) = 1 Then
Kq(i, j) = ""
Else
Kq(i, j) = Data(i, j)
End If
Next j
Next i
Sheet1.Range("F4").Resize(Data.Rows.Count, Data.Columns.Count) = Kq
End Sub
Public Function mamau(rng As Range) As Long
mamau = rng.Font.ColorIndex
End Function

Dạ thank anh.

File chạy nhẹ hơn nhiều rồi anh.
 
Upvote 0
Bạn thử đoạn code này xem sao
Mã:
Public Sub chuot0106()
Dim i As Long, j As Long
Dim Data As Range, Kq()
Set Data = Sheet1.Range("F4:BM386")
ReDim Kq(1 To Data.Rows.Count, 1 To Data.Columns.Count)
For i = 1 To Data.Rows.Count
For j = 1 To Data.Columns.Count
If mamau(Data(i, j)) = 1 Then
Kq(i, j) = ""
Else
Kq(i, j) = Data(i, j)
End If
Next j
Next i
Sheet1.Range("F4").Resize(Data.Rows.Count, Data.Columns.Count) = Kq
End Sub
Public Function mamau(rng As Range) As Long
mamau = rng.Font.ColorIndex
End Function

Với file dạng này code không chay được anh ơi T___T
 

File đính kèm

Upvote 0

File đính kèm

Upvote 0

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

Back
Top Bottom