Xin hỗ trợ sửa code loát dữ liệu về Form

Blue Softs epl Liên hệ QC

le_vis

Thành viên tích cực
Tham gia
23/7/09
Bài viết
1,111
Được thích
631
Tôi có làm Form nhập liệu sử dụng đoạn code để gọi dữ liệu ngược trở lại Form nhưng chạy đang bị khống chế vùng loát dữ liệu mà tìm mãi không ra. (Chi tiết tôi ghi trong File đính kèm ) Kính xin các bạn hỗ trợ sửa giúp và chỉ cho tôi bị sai chỗ nào ??? Trân trọng cảm ơn
 

File đính kèm

  • HoSo.xlsm
    81.5 KB · Đọc: 23

HieuCD

Chuyên gia GPE
Tham gia
14/9/10
Bài viết
8,565
Được thích
18,137
Tôi có làm Form nhập liệu sử dụng đoạn code để gọi dữ liệu ngược trở lại Form nhưng chạy đang bị khống chế vùng loát dữ liệu mà tìm mãi không ra. (Chi tiết tôi ghi trong File đính kèm ) Kính xin các bạn hỗ trợ sửa giúp và chỉ cho tôi bị sai chỗ nào ??? Trân trọng cảm ơn
Sai chổ nầy
Mã:
lr = .[R2000].End(xlUp).Row
......
 
Upvote 0

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
12,766
Được thích
19,497
Mình xin mạnh dạn góp với chủ bài đăng là CSDL của bạn xây dựng đang chưa chuẩn cho lắm;
Ví dụ từ cái nhỏ nhất:
(1) Con người ta sinh ra là đã có ngay giới tính & dân tộc; Vậy mà bạn để cột [Dân tộc] sau cả các cột như [Nghề nghiệp], [Trình độ VH] hay [2uê quán], [Hộ khẩu],. . . . là chưa hợp lẽ Trời!
(2) Bạn hoàn toàn nên tách cột [Tên & giới tính ra làm 2; Có khi bạn cần thống kê bao nhiêu nam hay nữ thì khó & cái khó này là do bạn thiết kế chưa chuẩn tạo ra;
(2.1) Người VN ta luôn xài họ & tên, CSDL của bạn chưa có họ là sao
Bạn dừng nói với mình là đang thiếu thông tin sau này bổ sung sau; Bạn sẽ bổ sung bằng cách nào: Hay mở CSDL ra & dò tìm từ đầu chí cuối; Mà tìm ra chưa chắc đúng vì trường hợp trùng cả tên lẫn giới tính thì sao?
(3) Có nghĩa là để khử lỗi (2.1) bạn nên có thêm cột [Mã] (duy nhất cho từng dòng dữ liệu của 'Chủ hộ (?)' như ví dụ sau:

STTNgày sổMã sốHọ và tênGTNgày sinhNghềV.HóaQuê QuánHộ khẩuTôn giáoT.chứcDTQT. . . . .
1
1/1/2020​
NJV00Nguyễn VũNm
6/30/1957​
Trung cấp10/10CDĐVKinhVN
2
1/10/2020​
FJG00Đỗ GPE.COMNm
2/2/1992​
Đại học12/12HHĐVKinhVN
3
1/1/2020​
FQN00Đỗ Thành Quí NamNm
12/21/1996​
Cao đẳng12/12LgKinhVN
4
1/1/2020​
NGN00Nguyễn Giới NamNm
8/29/2000​
Sơ cấp12/12TCKinhVN
5
1/1/2020​
TTN00Trần Thu Trinh NữNu
3/22/1994​
Sơ cấp12/12TLKinhVN
6
1/1/2020​
NAN00Ngô T. Quyên Ái NữNu
5/18/1988​
Cao đẳng12/12PGTàyVN
7
1/1/2020​
PHN00Phạm Giới Hoa NữNu
10/28/1995​
Sơ cấp12/12LgKinhVN
8
1/1/2020​
NHN05Nguyễn T Hồng NữNu
8/1/1966​
Sơ cấp9/12LgKinhVN
9
1/1/2020​
NTX00Nguyễn T Tú XuânNu
9/8/1998​
Sơ cấp12/12LgKinhVN
10
1/1/2020​
PHH00Phạm Hữu HoàiNu
11/18/1986​
Sơ cấp12/12LgKinhVN

Chú í 1 điều trong ví dụ này là cột [Mã]
Nó được dùng để làm mã QH (liên kết) với 1 bảng dữ liệu liên quan với "chủ hộ" như ví dụ sau:

Mã QHTTQuan hệHọ và tênSinhNghề nghiệpT.chức-CTXHĐơn vị công tác hiện nay
NJV001BốVõ XuânĐã chết - Tại quê
NJV002MẹTrần Thị1935Mất sức L.độngTại quê
NJV003EmVõ Thị1960Lao động tự dohhhh ccc
NJV004EmVõ Thúy1967Giáo viênĐảng ViênTrưởng Tiểu học
NJV005EmVõ Mạnh1973Thợ thủ côngTại quê
NJV006EmVõ Ngọc1978Kỹ sư điệnHoàng Mai, Hà Nội
NJV007VợChâu1959CNV nghỉ hưuQQ NN
NJV008Con traiVõ Xuân1980Kỹ sư ô tôĐảng ViênQQ NN
NJV009Con GáiVõ Anh Thư1985Th.sĩ Kinh tếĐảng ViênQQ NN
FJG001BốHoàng1965Hưu tríHHHH HHH
FJG002Mẹ1972Nội trợHHHH HHH
FJG003Chồng1991Kỹ sư CNTTHHHH HHH
FQN001BốĐỗ1967TP Kinh doanhĐảng ViênHHH MM
FQN002MẹVũ Xuân1972Nội trợHHH MM
FQN003Em traiĐỗ2001Sinh ViênHHH MM
FQN004VợNguyễn1996Nội trợHHH MM
NGN001BốNguyễn V1971Làm RuộngTại quê
NGN002MẹĐỗ T1970Làm RuộngTại quê
NGN003EmNguyễn X2013Học SinhTại quê
TTN001BốTrần Q1960Hưu tríMCC CC DD
TTN002MẹĐoàn P1959Hưu tríMCC CC DD
TTN003ChồngLương1991CNMCC CC DD
NAN001BốNS1960Làm ruộngHHH VVV
NAN002MẹNC1963Làm ruộngHHH VVV
NAN003AnhNT1981VIÊN CHỨCKKK MMM
NAN004ChồngLê Q1986Kỹ sư khai thácCty
NAN005ConLê A2010Học sinhTrường

Rất vui nếu được tiếp tục trau đổi cùng bạn!
 
Lần chỉnh sửa cuối:
Upvote 0

le_vis

Thành viên tích cực
Tham gia
23/7/09
Bài viết
1,111
Được thích
631
Mình xin mạnh dạn góp với chủ bài đăng là CSDL của bạn xây dựng đang chưa chuẩn cho lắm;
Ví dụ từ cái nhỏ nhất:
(1) Con người ta sinh ra là đã có ngay giới tính & dân tộc; Vậy mà bạn để cột [Dân tộc] sau cả các cột như [Nghề nghiệp], [Trình độ VH] hay [2uê quán], [Hộ khẩu],. . . . là chưa hợp lẽ Trời!
(2) Bạn hoàn toàn nên tách cột [Tên & giới tính ra làm 2; Có khi bạn cần thống kê bao nhiêu nam hay nữ thì khó & cái khó này là do bạn thiết kế chưa chuẩn tạo ra;
(2.1) Người VN ta luôn xài họ & tên, CSDL của bạn chưa có họ là sao
Bạn dừng nói với mình là đang thiếu thông tin sau này bổ sung sau; Bạn sẽ bổ sung bằng cách nào: Hay mở CSDL ra & dò tìm từ đầu chí cuối; Mà tìm ra chưa chắc đúng vì trường hợp trùng cả tên lẫn giới tính thì sao?
(3) Có nghĩa là để khử lỗi (2.1) bạn nên có thêm cột [Mã] (duy nhất cho từng dòng dữ liệu của 'Chủ hộ (?)' như ví dụ sau:

STTNgày sổMã sốHọ và tênGTNgày sinhNghềV.HóaQuê QuánHộ khẩuTôn giáoT.chứcDTQT. . . . .
1
1/1/2020​
NJV00Nguyễn VũNm
6/30/1957​
Trung cấp10/10CDĐVKinhVN
2
1/10/2020​
FJG00Đỗ GPE.COMNm
2/2/1992​
Đại học12/12HHĐVKinhVN
3
1/1/2020​
FQN00Đỗ Thành Quí NamNm
12/21/1996​
Cao đẳng12/12LgKinhVN
4
1/1/2020​
NGN00Nguyễn Giới NamNm
8/29/2000​
Sơ cấp12/12TCKinhVN
5
1/1/2020​
TTN00Trần Thu Trinh NữNu
3/22/1994​
Sơ cấp12/12TLKinhVN
6
1/1/2020​
NAN00Ngô T. Quyên Ái NữNu
5/18/1988​
Cao đẳng12/12PGTàyVN
7
1/1/2020​
PHN00Phạm Giới Hoa NữNu
10/28/1995​
Sơ cấp12/12LgKinhVN
8
1/1/2020​
NHN05Nguyễn T Hồng NữNu
8/1/1966​
Sơ cấp9/12LgKinhVN
9
1/1/2020​
NTX00Nguyễn T Tú XuânNu
9/8/1998​
Sơ cấp12/12LgKinhVN
10
1/1/2020​
PHH00Phạm Hữu HoàiNu
11/18/1986​
Sơ cấp12/12LgKinhVN

Chú í 1 điều trong ví dụ này là cột [Mã]
Nó được dùng để làm mã QH (liên kết) với 1 bảng dữ liệu liên quan với "chủ hộ" như ví dụ sau:

Mã QHTTQuan hệHọ và tênSinhNghề nghiệpT.chức-CTXHĐơn vị công tác hiện nay
NJV001BốVõ XuânĐã chết - Tại quê
NJV002MẹTrần Thị1935Mất sức L.độngTại quê
NJV003EmVõ Thị1960Lao động tự dohhhh ccc
NJV004EmVõ Thúy1967Giáo viênĐảng ViênTrưởng Tiểu học
NJV005EmVõ Mạnh1973Thợ thủ côngTại quê
NJV006EmVõ Ngọc1978Kỹ sư điệnHoàng Mai, Hà Nội
NJV007VợChâu1959CNV nghỉ hưuQQ NN
NJV008Con traiVõ Xuân1980Kỹ sư ô tôĐảng ViênQQ NN
NJV009Con GáiVõ Anh Thư1985Th.sĩ Kinh tếĐảng ViênQQ NN
FJG001BốHoàng1965Hưu tríHHHH HHH
FJG002Mẹ1972Nội trợHHHH HHH
FJG003Chồng1991Kỹ sư CNTTHHHH HHH
FQN001BốĐỗ1967TP Kinh doanhĐảng ViênHHH MM
FQN002MẹVũ Xuân1972Nội trợHHH MM
FQN003Em traiĐỗ2001Sinh ViênHHH MM
FQN004VợNguyễn1996Nội trợHHH MM
NGN001BốNguyễn V1971Làm RuộngTại quê
NGN002MẹĐỗ T1970Làm RuộngTại quê
NGN003EmNguyễn X2013Học SinhTại quê
TTN001BốTrần Q1960Hưu tríMCC CC DD
TTN002MẹĐoàn P1959Hưu tríMCC CC DD
TTN003ChồngLương1991CNMCC CC DD
NAN001BốNS1960Làm ruộngHHH VVV
NAN002MẹNC1963Làm ruộngHHH VVV
NAN003AnhNT1981VIÊN CHỨCKKK MMM
NAN004ChồngLê Q1986Kỹ sư khai thácCty
NAN005ConLê A2010Học sinhTrường

Rất vui nếu được tiếp tục trau đổi cùng bạn!
Cảm ơn Bác SA_DQ . Bác góp ý rất chuẩn hướng tới sẽ sửa lại theo gợi ý của bác. Bác xem giúp lý do tại sao vùng dữ liệu loát về Form chỉ dừng lại ở mã quản lý số 10 với ạ. Hiện đang lung búng mãi không tìm ra lý do tại sao phát sinh lỗi này. Xin Bác sửa giúp cho - Xin cảm ơn Bác
 
Upvote 0

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,056
Được thích
1,328
Giới tính
Nam
Nghề nghiệp
Banker
Tôi có làm Form nhập liệu sử dụng đoạn code để gọi dữ liệu ngược trở lại Form nhưng chạy đang bị khống chế vùng loát dữ liệu mà tìm mãi không ra. (Chi tiết tôi ghi trong File đính kèm ) Kính xin các bạn hỗ trợ sửa giúp và chỉ cho tôi bị sai chỗ nào ??? Trân trọng cảm ơn
Như ở bài #2, bác @HieuCD đã nói lỗi của bạn rồi.
Bạn chỉ cần sửa chỗ đó là ra thôi.
Bạn nên chọn cột nào chắc chắn phải điền dữ liệu để xác định dòng cuối cùng có dữ liệu.
Dữ liệu của bạn người số 11 đang không có thông tin cột R nên chỉ tìm ra đến người số 10.
Kinh nghiệm của tôi là cần quy định thông tin nào bắt buộc phải có, không có thì chưa được ghi nhận.
 
Upvote 0

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia
8/6/06
Bài viết
12,766
Được thích
19,497
Mình chưa hiểu lắm, nhưng thấy bên trang 'TongHop' đang chỉ có 10 'chủ hộ' thôi mà, làm sao có chủ hộ 11 mà tiến đến đó được;
Lý do lỗi thì mình chưa rõ lắm; nhưng muốn trừ khử lỗi này thì mỗi chủ hộ phải có mã duy nhất & tìm theo mã duy nhất; (Mã duy nhất mà mình đề xuất có tính tương tác cao giữa người quản lý dữ liệu với người khác & với hồ sơ chứng từ.

Còn chuyện tiến hay lùi thực tế trong công việc với vài trăm người thì vô phương & không cần thiết
Còn ở #2 anh HieuXD đã khuyến cáo, thì mình không rõ tại sao lại tìm dòng cuối ở cột đó, sao không là cột [Ho Tên] hay cột [Mối quan hệ] (?)
. . . .
 
Upvote 0

le_vis

Thành viên tích cực
Tham gia
23/7/09
Bài viết
1,111
Được thích
631
Mình chưa hiểu lắm, nhưng thấy bên trang 'TongHop' đang chỉ có 10 'chủ hộ' thôi mà, làm sao có chủ hộ 11 mà tiến đến đó được;
Lý do lỗi thì mình chưa rõ lắm; nhưng muốn trừ khử lỗi này thì mỗi chủ hộ phải có mã duy nhất & tìm theo mã duy nhất; (Mã duy nhất mà mình đề xuất có tính tương tác cao giữa người quản lý dữ liệu với người khác & với hồ sơ chứng từ.

Còn chuyện tiến hay lùi thực tế trong công việc với vài trăm người thì vô phương & không cần thiết
Còn ở #2 anh HieuXD đã khuyến cáo, thì mình không rõ tại sao lại tìm dòng cuối ở cột đó, sao không là cột [Ho Tên] hay cột [Mối quan hệ] (?)
. . . .
Thưa Bác SA_DQ và các bạn trong sheet tong hop tại cột D như cách tôi gọi là "Mã số" thì có tới mã 11 (Có nhiều nhưng tôi cắt vợi đi cho nhẹ để gửi lên)
Lẽ ra Nếu tại Ceel D3 ta nhập từ số 1...... 11... n thì nó sẽ loát toàn bộ dữ liệu của mã số 1...... 11... n đang lưu tại Sheet tong hop trở lại về Form nhưng khi gọi nó chỉ cập nhật lại cho mình từ 1 .... 10 thôi còn từ số 11 trở đi đên .... n thì không được nữa
KHÔNG HIỂU TẠI SAO tôi tìm mãi không ra trong khi đó vùng loát dữ code ghi tới 2000 dòng . Mong bác cùng các bạn xem sửa và chỉ giúp
 
Upvote 0

le_vis

Thành viên tích cực
Tham gia
23/7/09
Bài viết
1,111
Được thích
631
Như ở bài #2, bác @HieuCD đã nói lỗi của bạn rồi.
Bạn chỉ cần sửa chỗ đó là ra thôi.
Bạn nên chọn cột nào chắc chắn phải điền dữ liệu để xác định dòng cuối cùng có dữ liệu.
Dữ liệu của bạn người số 11 đang không có thông tin cột R nên chỉ tìm ra đến người số 10.
Kinh nghiệm của tôi là cần quy định thông tin nào bắt buộc phải có, không có thì chưa được ghi nhận.
Xin cảm ơn bạn. Đúng chỗ ngứa rồi _ Cảm ơn bạn nhiều
Lẽ ra thêm ngay cho nó đoạn này thì đâu đến nỗi mò suốt - Làm mất thời gian của các bạn
If WorksheetFunction.Trim(.[H7].Value) = "" Then
MsgBox "Ngay thang ve don vi l.viec ?"
validForm = False
Exit Function
End If
 
Lần chỉnh sửa cuối:
Upvote 0

le_vis

Thành viên tích cực
Tham gia
23/7/09
Bài viết
1,111
Được thích
631
Giời ạ, mãi tới giờ mới biết ngứa ở đâu
Xin cảm ơn các bạn nhiều nhiều; Xin lỗi, giải thích hơi khó hiểu làm các bạn mất thời gian
Lẽ ra thêm ngay cho nó đoạn này thì đâu đến nỗi mò suốt - Làm mất thời gian của các bạn
If WorksheetFunction.Trim(.[H7].Value) = "" Then
MsgBox "Ngay thang ve don vi l.viec ?"
validForm = False
Exit Function
End If
 
Upvote 0

VetMini

Chuyên gia GPE
Tham gia
21/12/12
Bài viết
12,564
Được thích
16,261
Giời ạ, mãi tới giờ mới biết ngứa ở đâu
Nó giống như cái "bất cầu nhơn".
Người thấy nó lần đầu hầu hết ngỡ nó là đồ chơi.

1634448087398.png

(*1) có người từng hỏi tôi phải chăng nó là cái cây đếm [hột] me.
Đem cái này đếm me thì đâm chém nhau chắc vỡ sòng. Me đếm bằng cách dùng một que tre gạt từng nhóm 4 hạt. Phải que tre người chơi mới nhìn rõ 4 hạt.
 
Upvote 0

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,056
Được thích
1,328
Giới tính
Nam
Nghề nghiệp
Banker
Xin cảm ơn các bạn nhiều nhiều; Xin lỗi, giải thích hơi khó hiểu làm các bạn mất thời gian
Lẽ ra thêm ngay cho nó đoạn này thì đâu đến nỗi mò suốt - Làm mất thời gian của các bạn
If WorksheetFunction.Trim(.[H7].Value) = "" Then
MsgBox "Ngay thang ve don vi l.viec ?"
validForm = False
Exit Function
End If
Góp ý thêm, hạn chế sử dụng WorksheetFunction để tăng tốc độ bạn nhé!
Trường hợp này sử dụng If not IsDate(.Range("H7")) Then ...
 
Upvote 0

VetMini

Chuyên gia GPE
Tham gia
21/12/12
Bài viết
12,564
Được thích
16,261
Góp ý thêm, hạn chế sử dụng WorksheetFunction để tăng tốc độ bạn nhé!
Trường hợp này sử dụng If not IsDate(.Range("H7")) Then ...
Bạn nói như vậy không rõ. Người ta sẽ hiểu lầm bạn muốn nói hàm Trim?
Nói rõ thì là:
[ ] là cách viết tắt của hàm Evaluate. [H7] là dùng hàm Evaluate để tính ra Range("H7"). Trình dịch VBA dịch "[ ]" thành "Evaluate" chậm hơn "Range" và kết nối hàm Evaluate chậm hơn cho nên có thể coi cách viết [H7] là cách hy sinh tốc độ để giảm số ký tự trong code (giảm được 7 ký tự).
 
Upvote 0

vanthinh3101

Thành viên tích cực
Tham gia
24/1/15
Bài viết
1,056
Được thích
1,328
Giới tính
Nam
Nghề nghiệp
Banker
Bạn nói như vậy không rõ. Người ta sẽ hiểu lầm bạn muốn nói hàm Trim?
Nói rõ thì là:
[ ] là cách viết tắt của hàm Evaluate. [H7] là dùng hàm Evaluate để tính ra Range("H7"). Trình dịch VBA dịch "[ ]" thành "Evaluate" chậm hơn "Range" và kết nối hàm Evaluate chậm hơn cho nên có thể coi cách viết [H7] là cách hy sinh tốc độ để giảm số ký tự trong code (giảm được 7 ký tự).
Vâng bác, ngoài vấn đề bác nói em còn muốn chủ thớt để ý là ô H7 cần điền dữ liệu ngày tháng, do vậy sử dụng IsDate() thì có thể kiểm tra luôn xem dữ liệu nhập vào có chính xác không?
 
Upvote 0

VetMini

Chuyên gia GPE
Tham gia
21/12/12
Bài viết
12,564
Được thích
16,261
Lưu ý là ở trên tôi có nói "dùng [ ] tiết kiệm được vài ký tự".
Khi bạn viết code thì tiết kiệm vài ký tự chả xứng đáng để hy sinh tốc độ.

Tuy nhiên, khi debug code và trong cửa sổ Immediate thì "tiết kiệm vài ký tự" cũng khá tiện lợi. Và tôi vẫn dùng thường xuyên.

Trong ví dụ dưới đây, tôi nạp trị 8 vào ô A1, 10 vào ô A2, và gọi hàm max. Dùng [ ] giúp tôi tiết kiệm gõ được một mớ ký tự.

1634475292627.png
 
Upvote 0

XUANKIETQNG

Thành viên mới
Tham gia
22/1/14
Bài viết
12
Được thích
2
@VetMini em có file này nhưng thông tin từ đưa qua ko trúng, nhờ anh xem bổ sung giúp với ạ
 

File đính kèm

  • PHIEU THOA THUAN(FORM hoàn chỉnh) (1).xlsm
    105.8 KB · Đọc: 4
Upvote 0
Web KT
Top Bottom