Làm sao để nhập liệu từ form vào sheet?

Liên hệ QC

othanhquango

Thành viên hoạt động
Tham gia
6/3/09
Bài viết
138
Được thích
7
Chào các bạn. Mình có một vấn đề nhưng chưa xử lý được. Nhờ các bạn giúp mình cách xử lý.

- Sao trong form DanhMucHang. Mình muốn xử dụng hàm Vlookup chỗ Tên hàng và ĐVT (lấy từ mã hàng) nhưng không làm được. Cứ báo lỗi name.
- Trong form NHập xuất Mình muốn khi nhấn nút GHI SỔ NK thì nó sẽ add các nội dung tưng ứng trong form vào sheet Phát sinh
 

File đính kèm

Chào các bạn. Mình có một vấn đề nhưng chưa xử lý được. Nhờ các bạn giúp mình cách xử lý.

- Sao trong form DanhMucHang. Mình muốn xử dụng hàm Vlookup chỗ Tên hàng và ĐVT (lấy từ mã hàng) nhưng không làm được. Cứ báo lỗi name.
Cụ thể trước đó bạn đã làm thế nào? Sao không đưa code bị lỗi lên đây ---> Ai biết thế nào mà giúp
 
Upvote 0
Thì có code gì đâu bạn. Minh test thử bằng hàm vlookup thôi. Nghĩa là mình run form đó. Sau đó mình đánh hàm vlookup vô và báo lỗi là name. Ý của mình bây giờ là nhờ bạn viết code sao cho mình nhập mã hàng vô thì tự nó vlookup qua tên hàng và đvt.

Nhân tiện cho mình hỏi luôn. Sao code của nút Ghi Sổ mình viết như sau nhưng khi chạy lại bị lỗi?

Private Sub Cmd_Ghiso_Click()
Set Sh = Sheets("PHATSINH"):
If Opt_TT = True Then
LoaiSo = "Thuc te"
Else
LoaiSo = "Ke toan"
End If

If Opt_Nhap = True Then
LoaiPS = "Nhap"
Else
LoaiPS = "Xuat"
End If

If Opt_Tot = True Then
TrangThai = "Tot"
Else
TrangThai = "Hong"
End If
NgayCT = Txt_NgayCT.Value: SoCT = Txt_SoCT.Value
NguoiYC = Cbo_NV.Value: NoiDung = Txt_NoiDung.Value

For Each Cls In Spr_GhiSo.ActiveSheet.Range([a1], [a50].End(xlUp))
With Sh.[a65500].End(xlUp).Offset(1)
.Value = LoaiSo: .Offset(, 1).Value = LoaiPS
.Offset(, 2).Value2 = NgayCT: .Offset(, 3) = SoCT
.Offset(, 4).Value = NoiDung: .Offset(, 5) = TrangThai
.Offset(, 6) = Cls.Value
.Offset(, 7).Value = Cls.Offset(, 1).Value: .Offset(, 8).Value = Cls.Offset(, 2).Value
End With
Next Cls
Set Sh = Nothing
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Thì có code gì đâu bạn. Minh test thử bằng hàm vlookup thôi. Nghĩa là mình run form đó. Sau đó mình đánh hàm vlookup vô và báo lỗi là name. Ý của mình bây giờ là nhờ bạn viết code sao cho mình nhập mã hàng vô thì tự nó vlookup qua tên hàng và đvt.
Ý tôi là:
- Chưa hình dung bạn đã gõ công thức gì? Biết là VLOOPUP nhưng nội dung cụ thế là gì?
- Công thức ấy được gõ vào đâu? Trong sheet hay trong SpeadSheet? Cụ thể là tại cell nào?
 
Upvote 0
Mình chụp hình ý mình muốn làm nè, mong các bạn giúp dùm mình. Chân thành cảm ơn các bạn

Nhân tiện nhờ bạn xem dùm mình nút Ghi sổ (như trên hình luôn)

hoi-2.gif
 

File đính kèm

Upvote 0
Bạn thử dùng cách của mình xem. Tại cột chọn mã nhấn F2
 

File đính kèm

Upvote 0
Bạn thử dùng cách của mình xem. Tại cột chọn mã nhấn F2

Cách của bạn thật là hay và sáng tạo, bạn có thể giúp mình gán chức năng này cho form danh mục hàng không?
Có nghĩa là thay vì hiện ra form của bạn tạo thì hiện ra form danh mục hàng của mình. Vì mình có thể xem tồn, hoặc find (mình chưa biết làm cái này nên tạo rồi để đó). Và tất nhiên là có thể db click hoac nhấn nút Add (có thể tạo thêm trên from danh mục hàng và chỉ enable khi open thông qua form NhapXuat, còn mở trực tiếp thì ko có nút này) thì nó chèn thông tin vào tương ứng như của bạn.

Mình rất chân thành cảm ơn sự giúp đỡ của các bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn kiểm tra xem. Để ít ảnh hưởng các chức năng khác, khi chọn nhấn nút chọn hay Alt+C
 

File đính kèm

Upvote 0
Sao mình chèn lúc nào nó cũng lấy mã hàng thứ 17 vậy bạn?
 
Upvote 0
Mình không rõ bạn nói chèn là thế nào.
Nhưng nguyên tắc chọn là phải đưa Focus đến dòng cần chọn rồi nhấn chọn (Hay Alt+C) (Mình thấy bình thường mà)
 
Upvote 0
Hic, sao kỳ vậy ta. Mình test như sau:
- Run from => chọn ô đầu tiên muốn chèn => F2 (hoặc nhấn nút DANH MUC HANG) => chọn mã hàng cần chèn => Nhấn nút chọn (Alt+C).

Mình test đi test lại mà vẫn chỉ chèn 1 mã hàng là (số 17 trong Danh muc hang - 15004049)
 
Upvote 0
Bạn điều chỉnh 1 chút cho chắc ăn hơn (Cố định dòng trước khi gán)
 

File đính kèm

Upvote 0
Chuẩn luôn. Bạn viết giúp mình chức năng find trên form danh mục hàng với. Mình muốn fillter trực tiếp trên form danh mục hàng luôn. Mình có tìm trên diễn đàn các bài viết tương tự nhưng không thấy. hic.

Ví dụ mình đánh từ cần tìm => nhấn OK => Nó fillter ra các mặt hàng nào có tên hàng chứa từ mình muốn tìm. Sau đó khi thoát ra vô lại thì nó trở về như cũ.
 
Upvote 0
Bạn muốn Find trên cột nào? Bạn lưu ý có 2 hình thức:

-Find: Tìm đến dòng đầu tiên phù hợp.
-Loc: Chỉ hiện các dòng phù hợp.

Để làm các vấn đề này, thậm chí phải thay đổi cảc phương thức nạp Data cho Form nữa. Dẫu sao các yêu cầu này đều có thể.

Mình thấy bạn tổ chức hệ thống Mã VT không hợp lý, tất cả các mã đều có tiền tố 15000 rồi mới đến phần chi tiết. Khi tìm kiếm phải gõ hết phần tiền tố đến phần riêng biệt mới có giá trị Tìm/Lọc thật mệt. Kinh nghiệm của mình là thế này. Giả sử mình có các loại hàng dưới đây. Mình đặt mã bằng tên tắt của nó
Sắt góc 75;80;85;90
Tôn dày 5;6;7;8
Hệ thống mã của mình như sau:

GOC75
GOC80
GOC85
TON05
TON06
TON07
Mình muốn tìm sắt góc 80 chẳng hạn, chỉ cần cõ chữ GOC nó đã đưa gần đến đích, gõ thêm 8 thì chắc đến nơi
Tất cảc các râu ria khác cho đằng sau. Ví dụ
GOC80NK+ : Sắt góc 80 Nhập khẩu loại tỷ trọng dương (Trọng lượng bằng hay vượt Ba dem)
 
Lần chỉnh sửa cuối:
Upvote 0
Hic, mã vật tư là quy định bắt buộc của bên mình rồi nên không thể thay đổi được. Nó có chuẩn hết rồi, nhìn vô ra biết được loại hình, loại vật tư, địa lý ...

Bạn giúp mình thế này, chỗ find mình có để 2 cái text box, một cái để tìm theo cột mã hàng và 1 cái để tìm theo tên hàng và chỉ có thể sử dụng 1 trong 2, nếu cái này có text thì cái kia disable và ngược lại. Kế quả là Lọc ra những dòng thỏa điều kiện.

Nếu đánh vào text box mã hàng => nhấn nút OK => lọc ra dòng có mã hàng tương ứng trên cột mã hàng.
=> Nếu không cái nào thỏa ĐK thì không làm gì hết và xuất là msgbox :"Không tìm thấy dữ liệu"
Nếu đánh vào text box tên hàng => nhấn nút OK => lọc ra các tên hàng có chứa từ cần tìm.
=> Nếu không cái nào thỏa ĐK thì không làm gì hết và xuất là msgbox :"Không tìm thấy dữ liệu"

Có thêm 1 nút Show all để hiện lại danh mục hàng như cũ hoặc khi thoát form ra vô lại thì cũng hiện danh mục hàng như cũ.

Rất mong sự giúp đỡ của các bạn.
 
Lần chỉnh sửa cuối:
Upvote 0
Mình đã làm, nhưng thực sự mã của bạn là dạng số nên việc lọc không đơn giản. Đối với số chỉ có so sánh <;>;= chứ không có các dạng lọc khác kiểu chuỗi. Bạn Auto Filter ngay trên sheet là rõ.
Mình chuyển mã của bạn vào Combo và sắp xếp từ nhỏ đến lớn. Cần tìm mã nào sẽ gõ thì Combo tự điền số đầu tìm thấy hoặc mở Combo kéo đến khoảng là xong
Khi không lọc bỏ dấu Find
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Hic, chuẩn không cần chỉnh. Bạn xem dùm mình nút ghi sổ NK, sao code của mình thế này. Mà nó cứ báo lỗi:

PHP:
Private Sub Cmd_Ghiso_Click()
Set Sh = Sheets("PHATSINH"):
 If Opt_TT = True Then
    LoaiSo = "Thuc te"
 Else
    LoaiSo = "Ke toan"
 End If
 
 If Opt_Nhap = True Then
    LoaiPS = "Nhap"
 Else
    LoaiPS = "Xuat"
 End If
 
 If Opt_Tot = True Then
    TrangThai = "Tot"
 Else
    TrangThai = "Hong"
 End If
 NgayCT = Txt_NgayCT.Value:     SoCT = Txt_SoCT.Value
 NguoiYC = Cbo_NV.Value:        NoiDung = Txt_NoiDung.Value
 For Each Cls In Me.Spr_GhiSo.ActiveSheet.Range([A1], [a50].End(xlUp))
   With Sh.[a65500].End(xlUp).Offset(1)
      .Value = LoaiSo:                             .Offset(, 1).Value = LoaiPS
      .Offset(, 2).Value2 = NgayCT:                .Offset(, 3) = SoCT
      .Offset(, 4).Value = NoiDung:                .Offset(, 5) = TrangThai
      .Offset(, 6) = Cls.Value
      .Offset(, 7).Value = Cls.Offset(, 1).Value:  .Offset(, 8).Value = Cls.Offset(, 2).Value
   End With
 Next Cls
Set Sh = Nothing
End Sub
 
Upvote 0
Mình thay đổi vị trí cột ghi chú và người nhận cho hợp lý
Code nút Save mình sửa như sau:
Mã:
Private Sub Cmd_Ghiso_Click()
Dim Cls As Range, Cls1 As Range, i, j
'Nhap du lieu vao sheet PHATSINH
i = 3
Set Cls1 = Sheet3.[a65500].End(xlUp).Offset(1)
Do While i < 33
If Me.Spr_GhiSo.ActiveSheet.Cells(i, 1) <> "" Then
Cls1.Value = IIf(Opt_TT, "Thuc te", "Ke toan")
Cls1.Offset(, 1) = IIf(Opt_Nhap, "Nhap", "Xuat")
Cls1.Offset(, 2) = Txt_NgayCT.Value
Cls1.Offset(, 3) = Txt_SoCT.Value
Cls1.Offset(, 4) = Txt_NoiDung.Value
Cls1.Offset(, 5) = IIf(Opt_Tot, "Tot", "Hong")
For j = 1 To 10
Cls1.Offset(, j + 5) = Me.Spr_GhiSo.ActiveSheet.Cells(i, j)
Next j
Cls1.Offset(, 16) = Cbo_NV.Value
Set Cls1 = Cls1.Offset(1)
End If
i = i + 1
Loop
'Xoa du lieu cu
Spr_GhiSo.Range("A3:J50").ClearContents
Txt_NgayCT = "": Txt_SoCT = "": Txt_NoiDung = "": Cbo_NV.Value = ""
End Sub
 

File đính kèm

Upvote 0
Trước tiên mình rất chân thành cảm ơn vì sự nhiệt tình của bạn nói riêng và của anh em GPE nói chung. Nhờ có bạn mà mình làm được các chức năng của form như mong muốn.

Mình còn một vấn đề nhỏ như sau. Nhờ bạn gợi ý giúp mình:

Như bạn thấy trong file của mình có sheet DANHMUCHANG trong đó cố 4 cột tồn. Trước dây mình dùng hàm sumproduct để tính ra các số tồn dựa vào nhập xuất bên sheet phát sinh. Nhưng do 1 phần là mặt hàng bên mình khá nhiều, 1 phần nữa là nghiệp vụ phát sinh liên tục. Do đó nếu dùng hàm sumproduct thì mỗi lần nhập nghiệp vụ phát sinh vô là nó tính toán rất lâu (thậm chí khoảng 30s).

Do đó nhờ các bạn giúp mình hướng giải quyết vấn đề trên. Một lần nữa mình chân thành cảm ơn các bạn.
 
Upvote 0
Tr­ường hợp của bạn thật khó, nếu không tính toán ngay thì khi cập nhật phát sinh cũng không xem được giá trị tồn kho cập nhật. Nếu không cần thì:
1/Tắt chức năng tự động tính toán;
2/Dùng VBA để tổng hợp.

Nếu nặng quá thì đành bỏ việc tham khảo thông số cập nhật mà chỉ tính lại khi cần thiết thôi
 
Upvote 0
Web KT

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

Back
Top Bottom