(Cần giúp đỡ) sửa lỗi file (1 người xem)

  • Thread starter Thread starter adung88
  • Ngày gửi Ngày gửi
Liên hệ QC

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

adung88

Thành viên mới
Tham gia
26/4/12
Bài viết
16
Được thích
0
(Cần giúp đỡ) sửa lỗi form Quản lý thông tin nhân viên

Em chào các anh chị trong diễn đàn GPE!
Do e không biết nhiều kiến thức về VBA nên đã tham khảo và cóp nhặt từ nhiều nguồn khác nhau để tạo nên một file quản lý thông tin của nhân viên (do đang trong thời gian mày mò nên nội dung, hình thức cũng như các code VBA lung tung lắm ạ).
Em gửi file lên đây xin nhờ các anh chị giúp em giải quyết một số vấn đề:

- Ở Userform1 "Quản lý thông tin", trước mắt em muốn giải quyết các vấn đề sau:
1. Khi em ấn "Nhập mới" để thêm thông tin Nhân viên mới (NV1) và ấn kết thúc = "Ghi dữ liệu" thì các thông tin của NV1 lại nằm ở dòng đầu tiên dươi các tiêu đề (ở đây là Row 6) mà không phải ở cuối cùng (ROW11)
2. Sau khi thêm thông tin NV1, em tiếp tục "Nhập mới" để thêm thông tin nhân viên thứ 2 (NV2), lúc này thông tin của NV2 lại đè lên dữ liệu của NV1 mà em vừa nhập vào lúc nãy mà không tự xuống dòng khác.
3. Do đây chỉ là file nháp nên dữ liệu tương đối ít (file gốc của em >200 nhân viên) khi cập nhật thông tin thì Load khá lâu (~30 giây). Cho em hỏi có cách nào làm cho việc cập nhật được "nhẹ nhàng" hơn không?
Mong sự giúp đỡ từ các anh chị trong diễn đàn.
 

File đính kèm

Lần chỉnh sửa cuối:
Em chào các anh chị trong diễn đàn GPE!
Do e không biết nhiều kiến thức về VBA nên đã tham khảo và cóp nhặt từ nhiều nguồn khác nhau để tạo nên một file quản lý thông tin của nhân viên (do đang trong thời gian mày mò nên nội dung, hình thức cũng như các code VBA lung tung lắm ạ).
Em gửi file lên đây xin nhờ các anh chị giúp em giải quyết một số vấn đề:

- Ở Userform1 "Quản lý thông tin", trước mắt em muốn giải quyết các vấn đề sau:
1. Khi em ấn "Nhập mới" để thêm thông tin Nhân viên mới (NV1) và ấn kết thúc = "Ghi dữ liệu" thì các thông tin của NV1 lại nằm ở dòng đầu tiên dươi các tiêu đề (ở đây là Row 6) mà không phải ở cuối cùng (ROW11)
2. Sau khi thêm thông tin NV1, em tiếp tục "Nhập mới" để thêm thông tin nhân viên thứ 2 (NV2), lúc này thông tin của NV2 lại đè lên dữ liệu của NV1 mà em vừa nhập vào lúc nãy mà không tự xuống dòng khác.
3. Do đây chỉ là file nháp nên dữ liệu tương đối ít (file gốc của em >200 nhân viên) khi cập nhật thông tin thì Load khá lâu (~30 giây). Cho em hỏi có cách nào làm cho việc cập nhật được "nhẹ nhàng" hơn không?
Mong sự giúp đỡ từ các anh chị trong diễn đàn.
Bạn ơi !
file excel xlsx thì làm gì có code mà xem chứ!
Bạn phải lưu file có code với phần đuôi mở rộng là xlsm hoăc xlsb
 
Upvote 0
Câu 1:
Do câu lệnh :
EnRow = Worksheets("nguondulieu").Range("B3").End(xlDown).Row + 1
Nhưng B3 và B4 lại là ô merge nên khi "End(xlDown).Row" chỉ xuống đến B5 và + thêm 1 nữa thành B6
và tất cả những lần "Ghi dữ liệu" chỉ vào dòng này mà thôi.
Để khắc phục có nhiều cách.
Mình thường dùng cách này:
EnRow = Sheet9.Range("B1048576").End(xlUp).Row + 1
Giải quyết được câu 1 thì cầu 2 tự động hết.
 
Upvote 0
Câu 1:
Do câu lệnh :
EnRow = Worksheets("nguondulieu").Range("B3").End(xlDown).Row + 1
Nhưng B3 và B4 lại là ô merge nên khi "End(xlDown).Row" chỉ xuống đến B5 và + thêm 1 nữa thành B6
và tất cả những lần "Ghi dữ liệu" chỉ vào dòng này mà thôi.
Để khắc phục có nhiều cách.
Mình thường dùng cách này:
EnRow = Sheet9.Range("B1048576").End(xlUp).Row + 1
Giải quyết được câu 1 thì cầu 2 tự động hết.
Cám ơn anh. Em đã làm được rồi. A cho em hỏi thêm:
Với câu hỏi thứ 3, theo e nhận thấy với code Cập nhật dữ liệu hiện nay thì khi cập nhật nó sẽ save lại toàn bộ dữ liệu từ form vào sheet "Nguondulieu", kể cả những thông tin không có sự thay đổi. (có phải do đó mà quá trình Save rất lâu?).
Bây giờ em muốn nó chỉ cập nhật những thông tin mình thực hiện sửa thôi có được không? Ví dụ: Sửa Giới tính Nam -->Nữ: Em chỉ muốn cập nhật nội dung thay đổi này vào sheet "Nguondulieu" và các dữ liệu khác vẫn giữ nguyên, không cần tiến hành cập nhật.
Mong anh giúp đỡ
 
Upvote 0
Cám ơn anh. Em đã làm được rồi. A cho em hỏi thêm:
Với câu hỏi thứ 3, theo e nhận thấy với code Cập nhật dữ liệu hiện nay thì khi cập nhật nó sẽ save lại toàn bộ dữ liệu từ form vào sheet "Nguondulieu", kể cả những thông tin không có sự thay đổi. (có phải do đó mà quá trình Save rất lâu?).
Bây giờ em muốn nó chỉ cập nhật những thông tin mình thực hiện sửa thôi có được không? Ví dụ: Sửa Giới tính Nam -->Nữ: Em chỉ muốn cập nhật nội dung thay đổi này vào sheet "Nguondulieu" và các dữ liệu khác vẫn giữ nguyên, không cần tiến hành cập nhật.
Mong anh giúp đỡ
Có lẽ do máy tính của bạn thế nào chứ mình cập nhật nhanh mà, có gì đâu nhỉ ?.
 
Upvote 0
Có lẽ do máy tính của bạn thế nào chứ mình cập nhật nhanh mà, có gì đâu nhỉ ?.
Có lẽ file gốc của em nhiêu sheet dữ liệu quá. Để có dữ liệu tới sheet "Nguondulieu" em đã tạo nhiều sheet dữ liệu đơn lẻ.
A cho em hỏi: có thể in được thông tin dữ liệu từ form bằng cách tạo một nút lệnh "In" không? Nếu có anh hướng dẫn giúp.
 
Upvote 0
Có lẽ file gốc của em nhiêu sheet dữ liệu quá. Để có dữ liệu tới sheet "Nguondulieu" em đã tạo nhiều sheet dữ liệu đơn lẻ.
A cho em hỏi: có thể in được thông tin dữ liệu từ form bằng cách tạo một nút lệnh "In" không? Nếu có anh hướng dẫn giúp.
Không hiểu câu hỏi này.
Bạn muốn in cái userForm1 đó hay chỉ là tạo một mút trên userForm1 để in một trang tính nào đó ?
nếu in cái userForm1 đó thì không.
 
Upvote 0
Không hiểu câu hỏi này.
Bạn muốn in cái userForm1 đó hay chỉ là tạo một mút trên userForm1 để in một trang tính nào đó ?
nếu in cái userForm1 đó thì không.
Vâng. Ý em là in userForm1 đó. Như vậy là không được rồi.
Bây giờ em muốn: sau khi đã thêm 1 nhân viên mới vào sheet "Nguondulieu" thì Mã hồ sơ và Họ tên người này sẽ tự cập nhật sang Sheet Datalist thì dùng cách nào được anh nhỉ?
 
Upvote 0
Vâng. Ý em là in userForm1 đó. Như vậy là không được rồi.
Bây giờ em muốn: sau khi đã thêm 1 nhân viên mới vào sheet "Nguondulieu" thì Mã hồ sơ và Họ tên người này sẽ tự cập nhật sang Sheet Datalist thì dùng cách nào được anh nhỉ?
Nếu muốn cần in cái UF đó thì nên tạo trên sheet một cái mẫu như cái UF đó rồi đưa dữ liệu trên form vào in.
Để cập nhật thì có nhiều cách dùng CT hoặc code
Mình thấy cái này đơn giản mà, bạn có thể tự tìm hiểu ngay trên GPE này.
 
Lần chỉnh sửa cuối:
Upvote 0
@Chucuoi92. Bây giờ em "Nhập mới" dữ liệu trên form có định dang ngày tháng (Năm sinh) khi cập nhật vào Sheet thì ngày, tháng đều bị đảo ngược. Ví dụ: em điền 3/4/2015 thì khi cập nhất xuống Sheet "Nguondulieu" lại thành "4/3/2015". Khắc phục thế nào anh nhỉ? (định dạng ở sheet theo kiểu dd/mm/yyyy rồi)
 
Lần chỉnh sửa cuối:
Upvote 0
@Chucuoi92. Bây giờ em "Nhập mới" dữ liệu trên form có định dang ngày tháng (Năm sinh) khi cập nhật vào Sheet thì ngày, tháng đều bị đảo ngược. Ví dụ: em điền 3/4/2015 thì khi cập nhất xuống Sheet "Nguondulieu" lại thành "4/3/2015". Khắc phục thế nào anh nhỉ? (định dạng ở sheet theo kiểu dd/mm/yyyy rồi)

không xem file nên không hiểu ngày tháng thế nào, nhưng định dạng chỉ là để nhìn thôi.
còn mặc định là nhập tháng trước, ngày sau
Bạn có thể tham khảo đoạn trích dẫn dưới đây để hiểu thêm về ngày tháng
Một vài điều cần biết khi nhập giá trị về Ngày tháng:

+ Giá trị Năm trong biểu thức Ngày tháng có gía trị trong khoảng từ 1900 đến 9999.

+ Nếu như khi nhập giá trị Ngày tháng, số chỉ Năm chỉ được viết với 2 con số thì những số nào có giá trị 0 và <30 thì excel sẽ chuyển đổi thành Năm với giá trị bằng giá trị này cộng với 2000, giá trị nào =30 thì công với 1900.

Ví dụ: 01/01/29 sẽ chuyển thành 01/01/2029
Ví dụ: 01/01/30 sẽ chuyển thành 01/01/1930

+ Dữ liệu Ngày tháng khi nhập vào nếu không hợp lệ thì sẽ đuơc5 chuyển thành dạng text :

Ví dụ: 01/13/2008, 01/01/10000..

+ Trong một vài trường hợp, nếu dữ liệu Ngày tháng nhập vào thông qua một hàm chuyển đổi thì excel sẽ tự động chuyển đổi các giá trị không đúng thành các giá trị khác tương ứng.

Ví dụ: =DATE(2008,2,31) sẽ được chuyển đổi thành =DATE(2008,3,1)=01/03/2008.

+ Tùy theo cách định dạng mà Ngày tháng nhập vào sẽ có các dạng biểu thị khác nhau, nhưng giá trị vẫn không thay đổi.

Ví dụ:

  • 18/04/2008 được chuyển đổi định dạng thành Friday 18/04/2008 với định dạng kiểu dddd dd/mm/yyyy
  • 18/04/2008 được chuyển đổi định dạng thành 39556 với định dạng kiểu General
  • 18/04/2008 được chuyển đổi định dạng thành Fri 18-Apr-2008 với định dạng kiểu ddd dd-mmm-yyyy
 
Upvote 0
Web KT

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

Back
Top Bottom