Bác nào giải thích hộ đoạn code " Private Sub Worksheet_Change(ByVal Target As Range)"

  • Thread starter hieuqnrc
  • Ngày gửi
H

hieuqnrc

Guest
26/9/13
1
0
0
hải phòng
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Or Target.Count > 1 Then Exit Sub
Target.Offset(, -2) = WorksheetFunction.Max([A:A]) + 1
Target.Offset(, -1) = Now
ActiveSheet.Unprotect "GPE"
Intersect(UsedRange, Target.EntireRow).Locked = True
Intersect(UsedRange, Target.EntireRow).Borders.LineStyle = 1
Target.Offset(, -1).NumberFormat = "dd-MMM-yy HH:mm:ss"
ActiveSheet.Protect "GPE"
End Sub
 
Khóa học Quản trị dòng tiền
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 3 Or Target.Count > 1 Then Exit Sub
Target.Offset(, -2) = WorksheetFunction.Max([A:A]) + 1
Target.Offset(, -1) = Now
ActiveSheet.Unprotect "GPE"
Intersect(UsedRange, Target.EntireRow).Locked = True
Intersect(UsedRange, Target.EntireRow).Borders.LineStyle = 1
Target.Offset(, -1).NumberFormat = "dd-MMM-yy HH:mm:ss"
ActiveSheet.Protect "GPE"
End Sub
Đại loại dùng để protect một mãng trong sheet "GPE" (chắc là bác nào bên giaiphapexcel làm).
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
569
100
43
66
HCM city
Ðề: Bác nào giải thích hộ đoạn code " Private Sub Worksheet_Change(ByVal Target As Range)"

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 3 Or Target.Count > 1 Then Exit Sub
2   Target.Offset(, -2) = WorksheetFunction.Max([A:A]) + 1
    Target.Offset(, -1) = Now
4    ActiveSheet.Unprotect "GPE"
    Intersect(UsedRange, Target.EntireRow).Locked = True
6    Intersect(UsedRange, Target.EntireRow).Borders.LineStyle = 1
    Target.Offset(, -1).NumberFormat = "dd-MMM-yy HH:mm:ss"
8    ActiveSheet.Protect "GPE"
End Sub
Đây là 1 macro sự kiện; Có nghĩa là thay đổi cái gì đó trên 1 vùng đã định thì macro sẽ tác động theo các lệnh mà ta viết sẵn;
Vùng mà ta thay đổi làm macro 'chạy' được VBA gọi với cái tên là Target
D1: Nếu chỉ số cột của vùng tác động của trang tính khác 3 hay số ô tác động lớn hơn 1 (1 cách đồng thời) thì thoát khỏi chương trình
(Có nghĩa là ta chỉ được tác động (thay đổi) trên 1 ô của cột [C] thì macro sẽ thực thi các lệnh dưới tiếp theo)
D2: Ô cùng dòng của cột [A] được gán trị là giá trí cực đại của cột cọng thêm 1
Vụ này thường là tăng 1 cho số thứ tự của dòng dữ liệu mới nhập)
D3: Ô liền kề bên trái ô vừa tác động được gán trị ngày tháng hiện hành
D4: Như bạn trên đã giải thích: Mở khóa trang tính (trước đó đã khóa) bỡi mật khẩu 'GPE'
Các dòng còn lại là định dạng 1 vùng trong dòng hiện hành & cuối cùng là khóa trang tính lại với mật khẩu 'GPE'
 

Xem nhiều

Webketoan Zalo OA