Giải thích code VBA, hàm Worksheet_Change()

  • Thread starter toannp
  • Ngày gửi
T

toannp

Guest
25/6/09
0
0
1
40
Đại Từ
ai giải thích đoạn mã này hộ với

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Errhandler:
Application.EnableEvents = False
Application.ScreenUpdating = False

If Not Intersect(Target, [g:g]) Is Nothing Then
If Target.Offset(0, -5).Value = "LAP" Or Target.Offset(0, -5).Value = "DESK" Then
Target.Offset(0, -5).Resize(1, 4).Copy Sheet1.[A5000].End(xlUp).Offset(1, 0)
End If
End If

Errhandler:
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

thanks
 
Khóa học Quản trị dòng tiền
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Ðề: Giải thích code VBA, hàm Worksheet_Change()

Mã:
[COLOR="#00FFFF"]'Ai giải thích đoạn mã này hộ với'[/COLOR]
Private Sub Worksheet_Change(ByVal Target As Range)
1 On Error GoTo Errhandler:
 Application.EnableEvents = False
3 Application.ScreenUpdating = False

If Not Intersect(Target, [g:g]) Is Nothing Then
5 If Target.Offset(0, -5).Value = "LAP" Or Target.Offset(0, -5).Value = "DESK" Then
Target.Offset(0, -5).Resize(1, 4).Copy Sheet1.[A5000].End(xlUp).Offset(1, 0)
7 End If
End If

9 Errhandler:
Application.EnableEvents = True
11 Application.ScreenUpdating = True

End Sub

Dòng 1: Nếu gặp lỗi, chuyển đến thực hiện các lệnh trong nhãn (D9)
D2 (Khó đây; . . . )
D3: Không cho ứng dụng cập nhất màn hình;
D4: Nếu ô tác động thuộc cột 'G' thì thực hiện các dòng lệnh dưới cho đến D8
D5: Điều kiện: Nếu từ ô tác động ta tính sang trái 5 cột (Là ô cùng hàng với ôtáxc động ở cột 'B') mang chuỗi là 'LAP' hay 'DESK' thì thực hiện dòng lệnh 6
D6: Copy vùng dữ liệu kể từ ô này (là ô bên trái cách 5 ô kể từ ô tác động) mở rọng sang fải 4 ô; Vùng cần chép đến có ô đầu tiên là ô liền ngay dưới ô cuối chứa dữ liệu của cột 'A'

(Vì đây là trái tim của macro nên mình ví dụ thêm cho rõ:
Nếu ta vừa nhập gì đó vô [G3], & nều [B3] đang mang trị chuỗi 'LAP' hay 'DESK' thì chép vùng [B3:E3] sang trang tính có tên "Sheet1", tại [A9] nếu [A8] trên nó là ô cuối trong cột 'A' đang có dữ liệu)
D10 & D11: Trả về trạng thái ban đầu
 
  • Like
Reactions: ninhmoon
T

toannp

Guest
25/6/09
0
0
1
40
Đại Từ
Ðề: Giải thích code VBA, hàm Worksheet_Change()

Mã:
[COLOR="#00FFFF"]'Ai giải thích đoạn mã này hộ với'[/COLOR]
Private Sub Worksheet_Change(ByVal Target As Range)
1 On Error GoTo Errhandler:
 Application.EnableEvents = False
3 Application.ScreenUpdating = False

If Not Intersect(Target, [g:g]) Is Nothing Then
5 If Target.Offset(0, -5).Value = "LAP" Or Target.Offset(0, -5).Value = "DESK" Then
Target.Offset(0, -5).Resize(1, 4).Copy Sheet1.[A5000].End(xlUp).Offset(1, 0)
7 End If
End If

9 Errhandler:
Application.EnableEvents = True
11 Application.ScreenUpdating = True

End Sub

Dòng 1: Nếu gặp lỗi, chuyển đến thực hiện các lệnh trong nhãn (D9)
D2 (Khó đây; . . . )
D3: Không cho ứng dụng cập nhất màn hình;
D4: Nếu ô tác động thuộc cột 'G' thì thực hiện các dòng lệnh dưới cho đến D8
D5: Điều kiện: Nếu từ ô tác động ta tính sang trái 5 cột (Là ô cùng hàng với ôtáxc động ở cột 'B') mang chuỗi là 'LAP' hay 'DESK' thì thực hiện dòng lệnh 6
D6: Copy vùng dữ liệu kể từ ô này (là ô bên trái cách 5 ô kể từ ô tác động) mở rọng sang fải 4 ô; Vùng cần chép đến có ô đầu tiên là ô liền ngay dưới ô cuối chứa dữ liệu của cột 'A'

(Vì đây là trái tim của macro nên mình ví dụ thêm cho rõ:
Nếu ta vừa nhập gì đó vô [G3], & nều [B3] đang mang trị chuỗi 'LAP' hay 'DESK' thì chép vùng [B3:E3] sang trang tính có tên "Sheet1", tại [A9] nếu [A8] trên nó là ô cuối trong cột 'A' đang có dữ liệu)
D10 & D11: Trả về trạng thái ban đầu

bạn giỏi quá, thank bạn nhiều. mà tại sao ko thấy nút cám ơn để ấn cám ơn cái nhỉ
 

Xem nhiều