Cách nhập dữ liệu trong Excel bằng form tự tạo

Liên hệ QC

thaibinh_excel

Thành viên hoạt động
Tham gia
18/10/07
Bài viết
127
Được thích
29
Nghề nghiệp
Bán Hàng
Các bạn giúp mình nhé,

Mình có 1 Form số liệu mà nếu nhập bằng cách trực tiếp thì rất dài và mất thời gian, còn nếu dùng lệnh Form của Excel thi nó không thể hiện hết nổi các sheet và phải dùng Tab mới chuyển được.

Mình muốn tạo 1 Form riêng để nhập số liệu tiết kiệm thời gian hơn bằng cách hễ mình nhập trong Form của mình là nó sẽ tự cập nhật qua sheet tổng hợp, nhập xong mình xóa đi nhập dữ liệu khác là nó tự động xuống 1 hàng để chuyển tiếp dữ liệu mà không mất đi dữ liệu của mình. Mình có đính kèm file để các bạn xem thử ?

Không biết Excel có làm được cái này không nhỉ? Các bạn xem và giúp mình nhé.

Cảm ơn các bạn nhiều
 

File đính kèm

  • Sample.xls
    20 KB · Đọc: 8,096
Hoàn toàn có thể được, nhưng không nên làm như thế vì như vậy khi ta không có nhu cầu nhập liệu mà di chuyển qua vùng đó lại bật Form nhập lên thì sao. Ngoài việc sử dụng nút lệnh, ta nên sử dụng việc gán tổ hợp phím tắt để gọi Form. Như vậy, sẽ rất thuận lợi vì ta đang sử dụng bàn phím không phải chuyển qua dùng chuột.
 
Upvote 0
cho tôi hỏi có cách nào không cần tạo 1 phím nhập liệu mà chỉ cần nhấn vô ô trong cột họ tên hoặc các cột tương tư sẽ hiện ra bảng nhập dữ liệu đươc không? cám ơn các A chị hướng dẫn dùm ah
Dựa vào sự kiện SheetBeforeDoubleClick của ThisWorkbook ta có thể làm được như thế.
PHP:
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, _
    ByVal Target As Range, Cancel As Boolean)
    if Target.Column = 1 then' Số cột bạn cần nhập'
        Run("HienThiFormNhapHoTen")' HienThiFormNhapHoTen là 1 sub bạn viết trong Modul
        Cancel =True
    End if
End Sub
Còn nếu muốn chỉ cần click vào đã hiện lên thì cũng được( nhưng hơi bất tiện) bạn hãy đưa code kia vào trong sự kiện Workbook_SheetSelectionChange
Mà đã dùng phím thì cần gì phải "nhấn vô ô trong cột họ tên" nhỉ.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Đọc topic này thấy hay quá, và mình nghĩ các bạn có thể giúp mình để tạo form cho file QLNS được chuyên nghiệp hơn.
Yêu cầu bài toán của mình thể hiện ở hình bên dưới. Mình gửi kèm file đính kèm mong các bạn giúp.
Mình đã làm cái form trong file rồi! Nút BACK, NEXT để đến hoặc lùi người kế tiếp trong HOSO

P/s: Có thể tạo được 1 nút search trong form để tìm kiếm thông tin 1 CB-CNV nào đó dựa vào MSNV???? Nếu được bạn làm giúp mình luôn nha --=0
q.jpg


Bạn nào rành cái này, tranh thủ giúp mình nha....

Mình cũng có xem qua mấy file các bạn gửi, Nói thật nhìn code thì mù tịt. Đang cố gắng học hỏi...
 

File đính kèm

  • QLNS.rar
    274.6 KB · Đọc: 979
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Bạn nào rành cái này, tranh thủ giúp mình nha....

Mình cũng có xem qua mấy file các bạn gửi, Nói thật nhìn code thì mù tịt. Đang cố gắng học hỏi...
Mình chỉ đơn thuần lập form để nhập liệu thôi, còn các vấn đề khác bạn từ từ tìm biểu và bổ sung nhé
Thân
 

File đính kèm

  • QLNS.rar
    357.4 KB · Đọc: 1,567
Upvote 0
truongthienbinh đã viết:
Đệ sửa lại cái EXcel tính lương tự động nhưng dữ liệu row trong excel không đủ (thực tế CN, mã hàng nhiều lắm), với lại Excel chạy chậm lắm. Các huynh có cách gì cải tiến nó 1 chút không. Nhờ huynh bỏ chút thời gian nghiên cứu sửa cho đệ với.
Đệ up ở đây nha: vì trong diễn đàn ko up đc
[URL]http://www.4shared.com/file/98223454...luong_may.html[/URL]
File của bạn quá lớn vì ở sheet chi tiết có quá nhiều dòng chứa công thức 60000 dòng ??? nên file của bạn hơn 10MB
Mình đã sửa lại không dùng công thức mà dùng code để nhập luôn,
Thân
 

File đính kèm

  • tinh luong may1.rar
    92.6 KB · Đọc: 1,067
Lần chỉnh sửa cuối:
Upvote 0
Mình chỉ đơn thuần lập form để nhập liệu thôi, còn các vấn đề khác bạn từ từ tìm biểu và bổ sung nhé
Thân

Mình đã sửa lại một số thứ từ file bạn gửi: - Định dạng ngày (dd/mm/yyyy), làm xuất hiện thông tin trong ô Nơi sinh... Thêm cái list sổ xuống chổ Dân tộc.
Tuy nhiên cái khó nhất vẫn là cập nhật thông tin. Hiện tại vẫn chưa mò ra. Đã tham khảo trên GPE rồi nhưng mình vẫn chưa tìm được cái có thể ứng dụng vào file này được. Chắc có lẽ trình độ của mình còn non quá.
Nếu được thì bạn giúp mình làm cái cập nhật luôn nha. Chỉ cần làm theo kiểu hướng dẫn rồi tự mình mò trong code cũng được.
Thân!!
 

File đính kèm

  • QLNS.rar
    364.9 KB · Đọc: 1,007
Upvote 0
Form này mình làm để nhập liệu, còn cập nhật là như thế nào bạn có thể nói rõ hơn được không
 
Upvote 0
Form này mình làm để nhập liệu, còn cập nhật là như thế nào bạn có thể nói rõ hơn được không
Ví dụ thế này nha:
- Bên form thứ 2 có thêm mini form để nhập kỹ luật, đào tạo các thứ... Vậy bây giờ thế này:
Giả sử muốn sửa lại dữ liệu ông có MSNV: C100015, thay đổi HSL từ 2.34 lên 2.65 chẳng hạn, hay thêm vào là ông đã bị kỷ luật... thì chỉ cần sửa trên form và nhấn update, vậy là dữ liệu nhập vào sheet HOSO.
 
Upvote 0
Cảm ơn bác Doomfootwear nhiều lắm. Cho em hỏi bác là thầy giáo phải không? vì em thấy Bác siêu quá. Đệ muốn học hỏi nhiều hơn, mong bác giúp đở.
 
Upvote 0
Mình thấy bài này rất hay, mình cung học hỏi được nhiều. Mình có vài vấn đề cần các bạn chỉ giáo:

1. Làm thế nào để combo box khi nhấn vào có thể hiển thi hai cột dữ liêu như cái combo box MA trong file QLNS vậy?

attachment.php
Đó là cái name ma trong Insert --> Name --> Define bạn ạ!
=OFFSET(HOSO!$B$3,1,0,MATCH("*",HOSO!$B$3:$B$65536,-1),2)
 

File đính kèm

  • untitled.JPG
    untitled.JPG
    52.1 KB · Đọc: 878
Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn bác Doomfootwear nhiều lắm. Cho em hỏi bác là thầy giáo phải không? vì em thấy Bác siêu quá. Đệ muốn học hỏi nhiều hơn, mong bác giúp đở.
Mình xin đính chính lại là mình không phải là thầy giáo :-= kiến thức Excel của mình còn non lắm, đang học hỏi thêm từ các anh chị từ diễn đàn đây.
 
Upvote 0
Để hiển thị được các ảnh tương ứng thì việc đặt tên file ảnh như bạn là đúng rồi, bây giờ bạn hãy đưa tất cả các file ảnh đó vào chung 1 thư mục, giả sử là "D:\AnhNhanVien"
Mỗi khi thay đổi mã thì bạn chỉ cần điền mã tương ứng vào trong câu lệnh load ảnh
Image1.picture = loadpicture("D:\AnhNhanVien\" & MaHieu & ".jpg")
 
Upvote 0
Chỉ rõ chỗ nào, ít ra thì bạn cũng phải cut và paste những gì bạn đang vướng mắc ra đây thì mọi người mới chỉ cho bạn được chứ.
Bạn thay đổi mã nhân viên bằng cách nào, ảnh bạn muốn hiển thị ở đâu, nếu trực tiếp trên Form thì bạn thay cái Image1 trên kia thành Me là được rồi.
 
Upvote 0
Cho mình hỏi thêm một câu nữa. Mình đã load được file ảnh theo mã nhân viên, nhưng khi file không tồn tại thì báo lỗi. Bây giờ mình muốn check sự tồn tại của file trước, nếu có thì load file đó, nếu không có thì load file có tên là noImage.jpg

Như vậy thì viết code như thế nào.
Rất mong các bạn chỉ bảo.
Đúng vậy, hiện nay nếu file không tồn tại thì báo lỗi. Còn nữa bạn, mình muốn ảnh chỉ hiện ở 1 vị trí nào đó cố định trên form thì làm thế nào? (Hiện nay anh đang hiện giữa form)
 
Upvote 0
- Kiểm tra file tồn tại dùng hàm Dir
Ví dụ: Dir ("D:\Image1.jpg") = "Image1.jpg" Nếu Image1.jpg tồn tại, nếu không tồn tại sẽ cho kết quả trống ""
- Vị trí ảnh trên form: Điều chỉnh thuộc tính PictureAlignment. Tuy nhiên như thế không phải là hay. Hãy thêm 1 cái Image lên Form rồi nhét ảnh vào đó thì hay hơn.
 
Upvote 0
Hay nhỉ, tôi cũng chưa hiểu rõ nguyên nhân nhưng khi bỏ cái Ma.RowSourse = Code hoặc bỏ sự kiện Ma_Change đi thì mọi việc đều ổn.
Về code của bạn tôi xin góp ý thêm 1 chút.
- Bỏ hết Me. đi vì các đoạn mã đang được viết trực tiếp trong Form, trường hợp bạn cần điều khiển control trên Form khác thì mới cần làm như thế.
- Sửa "AAA1 = Sheet1.Range("A" & ch)" thành AAA1.Text = Sheet1.Range("A" & ch).Value cho rõ ràng
- Đặt tên các control theo loại của chúng cho dex theo dõi. Ví dụ: AAA1 đặt lại thành TxtAAA1, Ma đặt lại thành CmbMa, Thoat đặt lại là CmdThoat....
- Với những dòng lệnh tương tác với 1 đối tường ta nên đưa vào with
Ví dụ
Shest(1).Cells(iRow, 2).Value = AAA2.Text
Shest(1).Cells(iRow, 3).Value = AAA3.Text
Shest(1).Cells(iRow, 4).Value = AAA4.Text
Shest(1).Cells(iRow, 12).Value = AAA11.Text
Viết lại thành
With Shest(1)
.Cells(iRow, 2).Value = AAA2.Text
.Cells(iRow, 3).Value = AAA3.Text
.Cells(iRow, 4).Value = AAA4.Text
.Cells(iRow, 12).Value = AAA11.Text
end with
Hoặc chuyển trạng thái Activate cho Sheet(1) thì không cần with nữa: Sheet(1) .select
 
Upvote 0
Lỗi đó là do định nghĩa Name Code của bạn thôi, bạn hãy xem lại nhé.
=OFFSET(Data!$A$4;1;0;MATCH("*";Data!$A$4:$A$700;-1);2)
Vì vạy, khi cập nhật cho số liệu cho cột B: Sheet1.Cells(iRow, 2).Value = Me.AAA2.Text
thì Name Code bị thay đổi dẫn đến phát sinh sự kiện Ma_Change và các textbox được load lại dữ liệu trên bảng tính sau đó mới chạy đến các đoạn sau:
Sheet1.Cells(iRow, 3).Value = Me.AAA3.Text
Sheet1.Cells(iRow, 4).Value = Me.AAA4.Text
Sheet1.Cells(iRow, 12).Value = Me.AAA11.Text
Sheet1.Cells(iRow, 13).Value = Me.AAA12.Text
.................
Vì vậy nó lại cập nhật chính số liệu cũ vào bảng tính.
Tôi không hiểu câu định nghĩa Name Code của bạn nhưng theo tôi với việc liệt kê danh mục mã hiệu thì chỉ cần làm trên 1 cột thôi.
 
Upvote 1
Cảm ơn các anh đã giúp đỡ trong việc nhập liệu bằng form.
Hiện giờ em đã có một bảng nhập dữ liệu theo đúng ý mình.
Tuy nhiên, hiện em vẫn còn một phần đang lăn tăn,
Đó là làm sao để truy xuất ngược dữ liệu đã nhập vào bảng để chỉnh sửa ngay trên form mà mình đã tạo ra.
Tức là khi cần tìm để chỉnh sửa và ghi lại thông tin của của một trường dữ liệu đã có trong data bằng form đó thì làm thế nào. Cái này giống phần inquires thông tin của phần mềm trong access.
Mong các cao thủ chỉ giáo. Đa tạ các anh.
Thanks.
Tanoshi97@gmail.com
 
Upvote 0
Nếu dữ liệu lưu trực tiếp trên file.xls thì bạn làm ngược lại so với bước nhập vào từ Form thôi. Trường hợp dữ liệu lưu trong Access thì có thể sử dụng các công cụ như DAO, ADO đã được nói nhiều trên diễn đàn.
 
Upvote 0
Web KT
Back
Top Bottom