Tạo SheetForm nhập dữ liệu hàng ngày

nguyentranduc1978

Thành viên mới
Tham gia ngày
26 Tháng tư 2008
Bài viết
48
Được thích
3
Điểm
665
Tuổi
41
Được nghỉ em lập bài này, nhiều chuyên mục em không biết đăng ở đâu cho đúng nên min mod thấy sai thì chuyển giúp bài sang chuyên mục phù hợp
EM muốn làm file để quản lý và truy xuất CSDL, file: 1 VBA (ở sheet Nhap du lieu em đã có yêu cầu để nhờ giúp)
Có bác trên này đã hướng dẫn em nên làm theo file: 2 VBA dung SheetForm
Em định làm SheetForm để nhập dữ liệu như file 2 VBA dung SheetForm mà chưa đủ trình để làm, bác nào rảnh thì giúp em
Yêu cầu SheetForm các bác xem có hợp lý và làm được không, nhập liệu em thống kê và nhập một lần vào cuối ngày

Ngày nhập; tháng nhập; năm nhập: riêng để sau em lọc dữ liệu tiện theo tháng nhưng khác năm để so sánh …. Nếu ngày nghỉ không làm thì chọn nghỉ không nhập liệu nữa

1. Nhân công: Nhập mã số nhân viên làm trong ngày, lương ngày (lương ngày có thể thay đổi)

2. Vật liệu 1
  • VL1.1
  • VL1.2
  • VL1.3
  • ….. thêm bổ sung khi cần
3. Vật liệu 2
  • VL2.1
  • VL2.2
  • VL2.3
  • ….. (thêm bổ sung khi cần)
4. Vật liệu 3
  • VL3.1
  • VL3.2
  • VL3.3
  • ….. (thêm bổ sung khi cần)
5. Mặt bằng-Điện-Nước-CPK (mục này em có thể đưa vào sau vì mới chỉ là tạm tính khi chưa có hóa đơn thu hàng tháng)
  • MB (tạm tính)
  • Đ
  • N
  • CPK1
  • CPK2
  • CPK3
  • (thêm bổ sung khi cần)
6. Doanh thu:
  • Số bộ loại 1
  • Số bộ loại 2
  • Số bộ loại 3
  • (thêm bổ sung khi cần)
 

File đính kèm

Lần chỉnh sửa cuối:

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai
Được nghỉ em lập bài này, nhiều chuyên mục em không biết đăng ở đâu cho đúng nên min mod thấy sai thì chuyển giúp bài sang chuyên mục phù hợp
.............................................
1. Nhân công: Nhập mã số nhân viên làm trong ngày, lương ngày (lương ngày có thể thay đổi)
.............................................
2. Vật liệu 1
.............................................
3. Vật liệu 2
.............................................
4. Vật liệu 3
.............................................
5. Mặt bằng-Điện-Nước-CPK (mục này em có thể đưa vào sau vì mới chỉ là tạm tính khi chưa có hóa đơn thu hàng tháng)
.............................................
6. Doanh thu:
.............................................
Chẳng hiểu, làm đại hên thì trúng, thực hiện công việc tuần tự như sau:
1/ Bước 1: Nhấn nút Mở Form Nhập VL (Form hiện ra), từ danh sách thả xuống Chọn 1 nhóm vật liệu và nhấn nút Lọc bảng giá, chọn các thứ cần nhập và nhấn nút Nhập giá.
Làm tuần tự cho các nhóm tiếp theo Chọn 1 nhóm vật liệu và nhấn nút Lọc bảng giá .

2/ Bước 2: Khi đã hoàn thành ở SheetForm thì nhấn nút Lưu Đơn hàng nó sẽ lưu dữ liệu vào Sheet Theo dõi. Khi lưu thì tại C3 nó tự động tăng cho số đơn hàng mới.

3/ Bước 3: Để nhập mới thì nhấn nút Xóa Vật Liệu, nó sẽ xóa vùng B8: G100

Tải lại File bài 5
 
Lần chỉnh sửa cuối:

nguyentranduc1978

Thành viên mới
Tham gia ngày
26 Tháng tư 2008
Bài viết
48
Được thích
3
Điểm
665
Tuổi
41
Chẳng hiểu, làm đại hên thì trúng, thực hiện cộng việc tuần tự như sau:
1/ Bước 1: Nhấn nút Mở Form Nhập VL (Form hiện ra), từ danh sách thả xuống Chọn 1 nhóm vật liệu và nhấn nút Lọc bảng giá, chọn các thứ cần nhập và nhấn nút Nhập giá.
Làm tuần tự cho các nhóm tiếp theo Chọn 1 nhóm vật liệu và nhấn nút Lọc bảng giá .

2/ Bước 2: Khi đã hoàn thành ở SheetForm thì nhấn nút Lưu Đơn hàng nó sẽ lưu dữ liệu vào Sheet Theo dõi. Khi lưu thì tại C3 nó tự động tăng cho số đơn hàng mới.

3/ Bước 3: Để nhập mới thì nhấn nút Xóa Vật Liệu, nó sẽ xóa vùng B8: G100
Em chạy thử khi lưu đơn hàng ở sheetform chỉ lưu được 14 dòng ở sheet Theo Doi. Nhiều hơn không chuyển được từ Sheetform sang. Bác xem lại code giúp em
 

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai
Lần chỉnh sửa cuối:

nguyentranduc1978

Thành viên mới
Tham gia ngày
26 Tháng tư 2008
Bài viết
48
Được thích
3
Điểm
665
Tuổi
41
Kiểm tra lại File, thêm bao nhiều là tùy ý.
Em vừa chạy thử tuần tự làm như sau thì thấy có một số lỗi sau:
1. Nhập dữ liệu nhân công trước
2. Nhập VL_1 thì thấy chỉ hiển thị 7 mục VL trong khi có 10 mục trong VL_1loi1.png

Nếu thoát và nhấn Mở Form Nhập VL lại thì lại thấy hiển thị đủ 10 mục


3. Nhập VL_2 và VL_3: ok chưa thấy lỗi

4. Phần mềm diệt virus Bitfender xoá VBA vì tưởng là virus (chắc em xử lý được cái này)
 

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai
Em vừa chạy thử tuần tự làm như sau thì thấy có một số lỗi sau:
1. Nhập dữ liệu nhân công trước
2. Nhập VL_1 thì thấy chỉ hiển thị 7 mục VL trong khi có 10 mục trong VL_1View attachment 215376

Nếu thoát và nhấn Mở Form Nhập VL lại thì lại thấy hiển thị đủ 10 mục


3. Nhập VL_2 và VL_3: ok chưa thấy lỗi

4. Phần mềm diệt virus Bitfender xoá VBA vì tưởng là virus (chắc em xử lý được cái này)
Kiểm tra lại File.
 

File đính kèm

nguyenthotnot

Thành viên mới
Tham gia ngày
25 Tháng mười một 2009
Bài viết
36
Được thích
5
Điểm
365
Tuổi
30
Em cũng có coppy và chỉnh sửa một file excel tự chế biến thêm một Userform nhập liệu ở Sheet Lọc nhưng đánh vào thì oke thông báo nhập cũng hoàn thành nhưng dữ liệu nó ko có nhập vào sheet đó là sao vậy các anh em đã chọn sheet rồi mong các anh chỉ em sai chỗ nào, thank các anh trước chúc các anh và bạn 1 ngày tốt lành em đang tập học Vba ah mong các anh/bạn thông cảm.
Bài đã được tự động gộp:

Em cũng có coppy và chỉnh sửa một file excel tự chế biến thêm một Userform nhập liệu ở Sheet Lọc nhưng đánh vào thì oke thông báo nhập cũng hoàn thành nhưng dữ liệu nó ko có nhập vào sheet đó là sao vậy các anh em đã chọn sheet rồi mong các anh chỉ em sai chỗ nào, thank các anh trước chúc các anh và bạn 1 ngày tốt lành em đang tập học Vba ah mong các anh/bạn thông cảm.
 

File đính kèm

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai
Em cũng có coppy và chỉnh sửa một file excel tự chế biến thêm một Userform nhập liệu ở Sheet Lọc nhưng đánh vào thì oke thông báo nhập cũng hoàn thành nhưng dữ liệu nó ko có nhập vào sheet đó là sao vậy các anh em đã chọn sheet rồi mong các anh chỉ em sai chỗ nào, thank các anh trước chúc các anh và bạn 1 ngày tốt lành em đang tập học Vba ah mong các anh/bạn thông cảm.
Bài đã được tự động gộp:
Góp ý cho bạn:
1/ Bạn diễn giải tôi chẳng hiểu gì cả? Trong File có sheet hóa đơn tại sao không dùng sheet hóa đơn để nhập liệu vào 1 sheet theo dõi chung mà lại để riêng mỗi nhà cung cấp 1 sheet?
2/ Theo tôi với File này chỉ cần 4 sheet:
- 1 Sheet theo dõi chung tất cả nhà cung cấp.
- 1 Sheet làm hóa đơn: Dùng để in và nhập liệu vào Sheet theo dõi.
- 1 Sheet dùng tổng hợp các nhà cung cấp.
- 1 Sheet làm danh mục hàng hóa.
3/ Theo tôi, trường hợp của bạn thì không nên dùng UserForm để nhập liệu các sheet, mà chỉ dùng UserForm để tra hàng hóa và nhập liệu nhanh vào sheet hóa đơn.
 
Lần chỉnh sửa cuối:

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
5,678
Được thích
9,499
Điểm
860
. . . . . . . . . . . . . . . .
Mình thật lòng khuyên bạn, là người mới bước vô VBA thì:
(1) Khai báo các tham biến tường minh hơn

(2) Tên các TextBox không nên lấy theo mặc định mà nên khoát cho nó cái tên dễ liên tưởng;
Ví dụ thây vì CommandButton1, ta nên gán tên CmdNhap
TextBox1 nên gán tên là tbNgay
. . . .
Việc này sẽ làm bạn rất tiết kiệm thời gian của mình

(3) Một khi bạn xài câu lệnh này: lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Thì trong các trang tính chứa dữ liệu không thể có dòng trống tại cột 'A' được.
Để kiểm tra câu lệnh đó, bạn hoàn toàn hoàn toàn có thể xài
MsgBox ActiveSheet.Name, , lastrow
Lúc đó bạn sẽ phát hiện ra những sai trái đang do đâu.
 
Lần chỉnh sửa cuối:

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai
Lần chỉnh sửa cuối:

nguyenthotnot

Thành viên mới
Tham gia ngày
25 Tháng mười một 2009
Bài viết
36
Được thích
5
Điểm
365
Tuổi
30
Góp ý cho bạn:
1/ Bạn diễn giải tôi chẳng hiểu gì cả? Trong File có sheet hóa đơn tại sao không dùng sheet hóa đơn để nhập liệu vào 1 sheet theo dõi chung mà lại để riêng mỗi nhà cung cấp 1 sheet?
2/ Theo tôi với File này chỉ cần 4 sheet:
- 1 Sheet theo dõi chung tất cả nhà cung cấp.
- 1 Sheet làm hóa đơn: Dùng để in và nhập liệu vào Sheet theo dõi.
- 1 Sheet dùng tổng hợp các nhà cung cấp.
- 1 Sheet làm danh mục hàng hóa.
3/ Theo tôi, trường hợp của bạn thì không nên dùng UserForm để nhập liệu các sheet, mà chỉ dùng UserForm để tra hàng hóa và nhập liệu nhanh vào sheet hóa đơn.
Không anh tại mỗi sheet của em là một cty em theo dõi hàng hóa nhập vào của 4,5 cty mỗi cty có đề nghị riêng và hóa đơn xuất riêng, hàng hóa riêng nếu em làm chung một sheet thì nó sẽ rất nhiều dòng...mong anh chỉ dùm em file em sai chỗ nào, hiện tại em đang chế lại nhập xong, em sẽ chế thêm tìm kiếm tra hàng hóa trên đó lun..
Bài đã được tự động gộp:

Mình thật lòng khuyên bạn, là người mới bước vô VBA thì:
(1) Khai báo các tham biến tường minh hơn

(2) Tên các TextBox không nên lấy theo mặc định mà nên khoát cho nó cái tên dễ liên tưởng;
Ví dụ thây vì CommandButton1, ta nên gán tên CmdNhap
TextBox1 nên gán tên là tbNgay
. . . .
Việc này sẽ làm bạn rất tiết kiệm thời gian của mình

(3) Một khi bạn xài câu lệnh này: lastrow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Thì trong các trang tính chứa dữ liệu không thể có dòng trống tại cột 'A' được.
Để kiểm tra câu lệnh đó, bạn hoàn toàn hoàn toàn có thể xài
MsgBox ActiveSheet.Name, , lastrow
Lúc đó bạn sẽ phát hiện ra những sai trái đang do đâu.
Thank anh đã góp ý để em sữa lại các tham biến
 
Lần chỉnh sửa cuối:

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
5,678
Được thích
9,499
Điểm
860
Nếu là mình thì mình sẽ phải viết như vầy:
PHP:
Private Sub CmdNhap_Click()
Dim ShName As String:                                            Dim lRw As Long

ShName = Me!cbTrT.Text
If ShName = Space(0) Then Exit Sub
With Worksheets(ShName)
    lRw = .Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1
    .Cells(lRw, "A").Value = .Cells(lRw - 1, "A").Value + 1
    .Cells(lRw, "B").Value = Me!tbNgay.Value:                   Me!tbNgay.Text = ""
    .Cells(lRw, "C").Value = Me!tbHD.Value:                      Me!tbHD.Text = ""
    .Cells(lRw, "D").Text = Me!tbNCC.Text:                      Me!tbNCC.Text = ""
'  . . . .             '
    .Cells(lRw, "H").Value = Me!tbSL.Value:                      Me!tbSL.Text = ""
' . . . . . . .                '
End With
End Sub
Mã:
Private Sub CommandButton2_Click()  'Nên Doi Tên        '
Unload UserForm1
End Sub
PHP:
Private Sub UserForm_Initialize()
With Me!cbTrT
    .AddItem "BienDong"
    .AddItem "VinhLong"
    .AddItem "BDHG"
    .AddItem "VPP"
    .AddItem "DongHa"
End With
End Sub
' . . . . . . . . * * * * * *'
 

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai

nguyentranduc1978

Thành viên mới
Tham gia ngày
26 Tháng tư 2008
Bài viết
48
Được thích
3
Điểm
665
Tuổi
41
Cái vụ này mấy bài trên đâu có đá động gì đến đâu giờ lại phát sinh thêm.
Vì em dùng pivot table thấy có cái bất tiện là mỗi lần cần lấy dữ liệu hàng ngày phải chọn lại vùng dữ liệu và các mục theo form báo cáo. Nếu dùng lọc trực tiếp ở sheet theo_doi tiện hơn nhiều. Cái này em sử dụng mới thấy
 

be09

Biên Hòa - Đồng Nai
Tham gia ngày
9 Tháng tư 2011
Bài viết
7,849
Được thích
7,565
Điểm
560
Tuổi
62
Nơi ở
TP. Biên Hòa, Đồng Nai
Vì em dùng pivot table thấy có cái bất tiện là mỗi lần cần lấy dữ liệu hàng ngày phải chọn lại vùng dữ liệu và các mục theo form báo cáo. Nếu dùng lọc trực tiếp ở sheet theo_doi tiện hơn nhiều. Cái này em sử dụng mới thấy
Ai nói bất tiện, viết code nó tự động lấy dữ liệu thêm.
 

nguyenthotnot

Thành viên mới
Tham gia ngày
25 Tháng mười một 2009
Bài viết
36
Được thích
5
Điểm
365
Tuổi
30
Anh ơi xem giúp dùm em tại sao em đánh theo đúng code của anh rồi nhưng nó vẫn ko chạy được, nếu em để mặc định các tham biến thì chỉ mở được nhưng ko nhập được anh xem giúp dùm em với thank anh nhiều
 

File đính kèm

Top