Đây là file đăng ký mã số thuế cá nhân em sưu tầm trên mạng và tùy biến thêm. Em nhờ mọi người xem qua code xem có thể tối giản ngắn gọn hơn giúp em được không nhé (ở module 1). Em cảm ơn!
Code em xây dựng vì không biết căn bản về VBA, cứ chắt lọc qua từng câu hỏi trên diễn đàn, ví dụ clear một mảng thì làm thế nào để chọn tự động mà không phải chọn tận 20000 dòng để xóa....
Đây là file đăng ký mã số thuế cá nhân em sưu tầm trên mạng và tùy biến thêm. Em nhờ mọi người xem qua code xem có thể tối giản ngắn gọn hơn giúp em được không nhé (ở module 1). Em cảm ơn!
Code em xây dựng vì không biết căn bản về VBA, cứ chắt lọc qua từng câu hỏi trên diễn đàn, ví dụ clear một mảng thì làm thế nào để chọn tự động mà không phải chọn tận 20000 dòng để xóa....
Đây là file đăng ký mã số thuế cá nhân em sưu tầm trên mạng và tùy biến thêm.
(2) Em nhờ mọi người xem qua code xem có thể tối giản ngắn gọn hơn giúp em được không nhé (ở module 1).
Code em xây dựng vì không biết căn bản về VBA, cứ chắt lọc qua từng câu hỏi trên diễn đàn,
(1) ví dụ clear một mảng thì làm thế nào để chọn tự động mà không phải chọn tận 20000 dòng để xóa....
Về câu lệnh mới này, bạn tìm hiểu fương thức Currentregion có trên diễn đàn
(2) Bạn có macro này ở mudule Main:
Mã:
Sub OpenMyform()
If Not Intersect(ActiveCell, Sheet1.[L16:O65536]) Is Nothing Then
UserForm1.Show
ElseIf Not Intersect(ActiveCell, Sheet1.[Q16:S65536]) Is Nothing Then
UserForm1.Show
ElseIf Not Intersect(ActiveCell, Sheet1.[E5]) Is Nothing Then
UserForm1.Show
End If
End Sub
Nên chuyển thành macro sự kiện ở trang 'Sheet1' như sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union([E5], [Q16:S65536], [L16:O65536])) Is Nothing Then
UserForm1.Show
End If
End Sub
Một vài góp í ngoài lề iêu cầu của bạn:
(*) Bạn dùng câu lệnh
Mã:
Declare Function GetTickCount Lib "kernel32" () As Long
& . . . Để đo đếm thời gian trãi qua của 1 macro là quá xa xĩ!
Chỉ cần xài hàm Timer() là được rồi.
(*) Trong macro LayMaTinh có đoạn code của bạn như sau:
Thiết nghĩ không fải lúc nào cũng đem tất cả ra tách tỉnh/huyên/xã làm vậy; Những "cha" nào đã được tách lần trước (do chạy macro này) thì lần sau thôi đi chứ; Chạy như vậy là bạn chưa biết tiết kiệm tiền của của những người
đóng thuế đó nghe!
(*) ID của bạn đang xài tiềm ẩn nguy cơ vì độ dài của chúng không đồng nhất. Sẽ lúc nào đó trở ngại sinh ra bỡi sự tài lanh về kí tự đại diện của Excel gây cho bạn.
Theo mình thì Mã NV nên có độ dài là 5, ví dụ:
Về câu lệnh mới này, bạn tìm hiểu fương thức Currentregion có trên diễn đàn
(2) Bạn có macro này ở mudule Main:
Mã:
Sub OpenMyform()
If Not Intersect(ActiveCell, Sheet1.[L16:O65536]) Is Nothing Then
UserForm1.Show
ElseIf Not Intersect(ActiveCell, Sheet1.[Q16:S65536]) Is Nothing Then
UserForm1.Show
ElseIf Not Intersect(ActiveCell, Sheet1.[E5]) Is Nothing Then
UserForm1.Show
End If
End Sub
Nên chuyển thành macro sự kiện ở trang 'Sheet1' như sau:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Union([E5], [Q16:S65536], [L16:O65536])) Is Nothing Then
UserForm1.Show
End If
End Sub
Một vài góp í ngoài lề iêu cầu của bạn:
(*) Bạn dùng câu lệnh
Mã:
Declare Function GetTickCount Lib "kernel32" () As Long
& . . . Để đo đếm thời gian trãi qua của 1 macro là quá xa xĩ!
Chỉ cần xài hàm Timer() là được rồi.
(*) Trong macro LayMaTinh có đoạn code của bạn như sau:
Thiết nghĩ không fải lúc nào cũng đem tất cả ra tách tỉnh/huyên/xã làm vậy; Những "cha" nào đã được tách lần trước (do chạy macro này) thì lần sau thôi đi chứ; Chạy như vậy là bạn chưa biết tiết kiệm tiền của của những người
đóng thuế đó nghe!
(*) ID của bạn đang xài tiềm ẩn nguy cơ vì độ dài của chúng không đồng nhất. Sẽ lúc nào đó trở ngại sinh ra bỡi sự tài lanh về kí tự đại diện của Excel gây cho bạn.
Theo mình thì Mã NV nên có độ dài là 5, ví dụ:
Cái phương thức Currentregion này hay quá. Cảm ơn bạn nhiều nhé. ID thì thực ra đúng là 5 con số nhưng mình thay đổi từ 1 đến... đấy .
Còn cái đoạn "cha" nào đã lấy, biết là biết vậy nhưng vì mình vừa tìm tòi vừa làm nên chưa biết cách phải làm sao.
Bạn lấy trang tính trống; Ở 1 cột nào đó chọn làm thí nghiệm, bạn nhập vài ô chứa các kí tự bất kì & vài ô với các kí số bất kì; Nhưng cũng còn vài ô chưa nhập gì;
Sau đó mở bộ thu macro lên & ghi lại các lệnh Goto đến các ô trống (Blank)
Sau khi kết thúc thu macro ta sẽ chỉnh lại cho sáng sửa hơn nếu cần
Ở sheet "all" có phần giới tính ở cột 47. Có cách nào để nếu là Nam thì trong sheet "Lay ma" tại cột 3 sẽ là Y, nếu là nữ thì sẽ là N tương ứng không ạ?