Bạn có thể giải thích giúp mình đoạn code đó không?
1>
Private Sub Worksheet_Change(ByVal Target As Range) ---> Ý muốn cho code chạy dựa vào sự thay đổi nào đó trên sheet
2>
Application.ScreenUpdating = False ---> Thêm cái này vào để khi chạy code màn hình nó không giật giật (bạn bỏ đoạn này thử xem)
3>
On Error Resume Next ---> Phòng ngừa có lỗi gì đó xuất hiện thì cho qua luôn
4>
If Not Intersect([C4:C5], Target) Is Nothing Then ---> Ý muốn nói chỉ khi nào tôi thao tác thay đổi gì đó ở
C4:C5 thì mới chạy code (gõ dử liệu chổ khác thì làm ơn im re dùm)
5>
[A9].CurrentRegion.Offset(1).ClearContents
a) [A9].CurrentRegion --> Tương đương với việc bạn đặt con trỏ tại A9 rồi bấm tổ hợp phím Ctrl + Shift + * (sẽ chọn hết vùng dử liệu đang "dính" với A9)
b) [A9].CurrentRegion.Offset(1) ---> Từ vùng dử liệu vừa chọn, dịch xuống 1 dòng (đang ở dòng 9, dịch xuống 1 dòng thành dòng 10... Ý muốn chừa lại dòng tiêu đề)c) [A9].CurrentRegion.Offset(1).ClearContents ---> Xóa hết dử liệu, chừa lại tiêu đề
6>
.AutoFilterMode = False ---> Hủy bỏ chế độ AutoFilter trên sheet
7>
.AutoFilter 10, IIf([C4] = "", "*", [C4]) ---> AutoFilter dử liệu ở cột 10, điều kiện nếu C4 = "" (tức ta xóa C4) thì lấy hết cột 10... tương đương với việc chọn All... ngược lại thì lấy điều kiện theo C4
8>
.Resize(, 4) ---> Điều chỉnh lại vùng dử liệu --->
Resize(x,y) tức điều chỉnh vùng dử liệu thành
x dòng, y cột ---> Ở đây
Resize(,4) là điều chỉnh dử liệu thành
4 cột, dòng không thay đổi
9>
.PasteSpecial 3 ---> Tương đương với
PasteSpecial\Value
10>
XXX.Value = Evaluate("=Row($1:$1000)") ---> Tương đương với việc bạn quét chọn vùng
XXX và gõ vào công thức mãng
=ROW($1:$1000)
Một vài hướng dẩn ngắn gọn (chắc cũng còn rất nhiều thiếu sót)... Bạn hãy tham khảo thêm các bài viết cơ bản về VBA nhé:
http://www.giaiphapexcel.com/forum/showthread.php?t=650
------------------------------
Mà bạn diệt virút bằng phần mềm gì vậy cho mình xin được không?
Tôi chỉ dùng tay để "dọn" virus thôi... không xài bất cứ phần mềm diệt virus nào