Hỗ trợ viết code sự kiện khi thay đổi dữ liệu 3 cột.

Liên hệ QC

MaiAn001

Thành viên mới
Tham gia
14/1/22
Bài viết
14
Được thích
3
Kính gửi: Anh chị trên Diễn Đàn .
Hiện tại em đang làm công thức để lấy đơn giá nhập xuất theo điều kiện nhập liệu. Nhưng vì em muốn chuyển đổi qua Worksheet_Change của sheet để gán giá trị value. nên nhờ anh chị giúp em code với ạ. em có đính kèm file.
1.> Khi nhập liệu 1 trong 3 cột đó thì cột số đơn giá sẽ lấy dữ liệu đơn giá theo từng mã vật tư từ sheet Danhmuc
+ Trường hợp loại phiếu N thì lấy giá nhập, còn khác thì lấy đơn giá xuất, đồng thời cột thành tiền lấy đơn giá nhân với số lượng
2.> khi sửa hay thay đổi 1 trong 3 cột đó thì đơn giá cũng thay đổi theo.
vd: trường hợp em muốn sửa lại mã hàng hóa hay loại phiếu và số lượng thì cột đơn giá và thành tiền thay đổi
3.> Trường hợp cột số lượng mà =0 thì cột đơn và cột thành tiền để trống, còn khác 0 thì cột đơn giá cập nhật và cột thành tiền lấy SL*Đơn giá tương ứng
P/s: Em có làm công thức tương ứng và giải thích trong file .
Rất mong anh chị giúp em ạ!
 

File đính kèm

  • Book1.xlsm
    15.3 KB · Đọc: 4
Kính gửi: Anh chị trên Diễn Đàn .
Hiện tại em đang làm công thức để lấy đơn giá nhập xuất theo điều kiện nhập liệu. Nhưng vì em muốn chuyển đổi qua Worksheet_Change của sheet để gán giá trị value. nên nhờ anh chị giúp em code với ạ. em có đính kèm file.
1.> Khi nhập liệu 1 trong 3 cột đó thì cột số đơn giá sẽ lấy dữ liệu đơn giá theo từng mã vật tư từ sheet Danhmuc
+ Trường hợp loại phiếu N thì lấy giá nhập, còn khác thì lấy đơn giá xuất, đồng thời cột thành tiền lấy đơn giá nhân với số lượng
2.> khi sửa hay thay đổi 1 trong 3 cột đó thì đơn giá cũng thay đổi theo.
vd: trường hợp em muốn sửa lại mã hàng hóa hay loại phiếu và số lượng thì cột đơn giá và thành tiền thay đổi
3.> Trường hợp cột số lượng mà =0 thì cột đơn và cột thành tiền để trống, còn khác 0 thì cột đơn giá cập nhật và cột thành tiền lấy SL*Đơn giá tương ứng
P/s: Em có làm công thức tương ứng và giải thích trong file .
Rất mong anh chị giúp em ạ!
Bạn hay thêm bớt dữ liệu và kiểm tra lại kết quả của sheet NhapLieu.
Bạn hãy thêm bớt dữ liệu (cột Giá N, Giá X) và kiểm tra lại kết quả của Sheet NhapLieu.
 

File đính kèm

  • Book1.xlsm
    29.5 KB · Đọc: 6
Upvote 0
Bạn hay thêm bớt dữ liệu và kiểm tra lại kết quả của sheet NhapLieu.
Bạn hãy thêm bớt dữ liệu (cột Giá N, Giá X) và kiểm tra lại kết quả của Sheet NhapLieu.
Cảm ơn Bạn đã dành thời gian giúp đỡ mình.
Với code đó thì quá đúng với yêu cầu ban đầu.
Nhưng áp dụng thực tế thì có một số hạn chế giống như mình làm công thức (do mình không phát hiện ra sớm)
Nhờ bạn giúp mình một số lỗi.
1.>Mới nhập liệu 2 cột đầu tiên thì nó bị xóa khi chưa nhập được mã vât tư.
2.> Nếu thay đổi đơn giá ở sheet Danhmuc thì nó thay đổi hết các chứng từ cũ. (sẽ ảnh hưởng đến nghiệp vụ cũ)
Mong muốn:
1.> Nhập liệu không bị xóa cả khi nhập sai với danh mục (vì nhiều lúc có một số không có trong danh mục.)
2.> Mình có làm thêm sheet DG. mục đích là khi thay đổi đơn giá thì các chứng từ củ sẽ thay đổi theo khung thời gian đó (mình có giải thích trong file). do 1 -2 tháng sẽ có thay đổi một vài mặt hàng. nên sợ thay đổi hết vậy ảnh hưởng đến báo cáo Nhập xuất tồn.
Cảm ơn bạn rất nhiều!
 

File đính kèm

  • Book1-1.xlsm
    32.4 KB · Đọc: 1
Upvote 0
Cảm ơn Bạn đã dành thời gian giúp đỡ mình.
Với code đó thì quá đúng với yêu cầu ban đầu.
Nhưng áp dụng thực tế thì có một số hạn chế giống như mình làm công thức (do mình không phát hiện ra sớm)
Nhờ bạn giúp mình một số lỗi.
1.>Mới nhập liệu 2 cột đầu tiên thì nó bị xóa khi chưa nhập được mã vât tư.
2.> Nếu thay đổi đơn giá ở sheet Danhmuc thì nó thay đổi hết các chứng từ cũ. (sẽ ảnh hưởng đến nghiệp vụ cũ)
Mong muốn:
1.> Nhập liệu không bị xóa cả khi nhập sai với danh mục (vì nhiều lúc có một số không có trong danh mục.)
2.> Mình có làm thêm sheet DG. mục đích là khi thay đổi đơn giá thì các chứng từ củ sẽ thay đổi theo khung thời gian đó (mình có giải thích trong file). do 1 -2 tháng sẽ có thay đổi một vài mặt hàng. nên sợ thay đổi hết vậy ảnh hưởng đến báo cáo Nhập xuất tồn.
Cảm ơn bạn rất nhiều!
Theo tôi bạn không cần phải sử dụng thêm Sheet ĐG mà tích họp luôn trong Sheet Danhmuc, Bạn thêm một trường nữa là Cột A="thời gian áp dụng giá từ ngày"
khi ấy code sẽ căn cứ vào thời gian ấy để xác định giá của Mã hàng xuất hay nhập
Trong trường hợp ngày nhập liệu nhỏ hơn ngày áp dụng giasthif sẽ xảy ra 2 trường hợp
1- Những bản ghi đã nhập liệu (dòng cũ)có cột A < ngày áp dụng>> sẽ được giữ nguyên không thay đổi.(trường hợp này khi ta sửa đổi ngày áp dụng (cột A/Sh Danhmuc)
2- Khi m=nhập liệu: nếu ngày nhập liệu (cột A) < ngày áp dụng >>> Cột đơn giá sẽ bị bỏ trống >>>do không tìm thấy giá phù hợp
Xem File và hãy thử thật kỹ các trường hợp có thể xảy ra nhé.
 

File đính kèm

  • Book1-1.xlsm
    34.7 KB · Đọc: 5
Upvote 0
Theo tôi bạn không cần phải sử dụng thêm Sheet ĐG mà tích họp luôn trong Sheet Danhmuc, Bạn thêm một trường nữa là Cột A="thời gian áp dụng giá từ ngày"
khi ấy code sẽ căn cứ vào thời gian ấy để xác định giá của Mã hàng xuất hay nhập
Trong trường hợp ngày nhập liệu nhỏ hơn ngày áp dụng giasthif sẽ xảy ra 2 trường hợp
1- Những bản ghi đã nhập liệu (dòng cũ)có cột A < ngày áp dụng>> sẽ được giữ nguyên không thay đổi.(trường hợp này khi ta sửa đổi ngày áp dụng (cột A/Sh Danhmuc)
2- Khi m=nhập liệu: nếu ngày nhập liệu (cột A) < ngày áp dụng >>> Cột đơn giá sẽ bị bỏ trống >>>do không tìm thấy giá phù hợp
Xem File và hãy thử thật kỹ các trường hợp có thể xảy ra nhé.
Cảm ơn Bạn đã tìm hướng xử lý không thêm sheet DG và viết code lại cho mình.
Mình vừa xem file thì có một số lỗi. Bạn giúp mình với nhé.
1> Khi nhập mã vật tư vào thì cột tên vật tư và đơn vị tính nó nhảy bị sai. (có thể cột Mã VT, Tên vật tư, ĐVT không cần nhập tự động... mình sẽ nhập bằng tay)
1> Bạn có thể để thêm sheet DG giúp mình được không? vì để vậy sẽ còn thấy đơn giá củ (lỡ may bị xóa cột đơn giá thì có cái để cập nhật lại.)
 
Upvote 0
@Chủ bài đăng: Bạn tạo hệ mã chưa được ngon lành cho lắm; Có thể giờ chưa có vấn đề gì, nhưng tiềm ẩn nguy cơ trong 1 ngày thời tiết xấu nào đó sẽ đến với bạn:

MA_VLSPHHTENDviKHOGIÁ NHẬPGIÁ XUẤT
COVA4Bìa lỗ A4XấpVPP
1500​
2000​
COVA4BBìa A4 màu xanh dươngRamVPP
34000​
34500​
COVA4GBìa A4 màu xanh lá câyCáiVPP
500​
1000​
COVLBìa láCáiVPP
100​
600​
COVPL80Bìa ép Plastic 80MicXấpVPP
1500​
2000​
COVPL80-A3Bìa ép Plastic 80Mic-A3XấpVPP
1700​
2200​
PENCP01Bút xóa CP01CâyVPP
4500​
5000​
PENDQBút dạ quang sáp vặnCâyVPP
7000​
7500​
PENDQGBút dạ quang xanhCâyVPP
8000​
8500​
PENDQVBút dạ quang vàngCâyVPP
8000​
8500​
. . . .. . . .. . . .. . .

Lỗi sẩy ra khi Excel tài lanh khi bạn xài phương thức nào đó với ký tự đại diện "*" sau này.
Nếu là mình thì mình sẽ thêm như:

MA_VLSPHHTEN
COVA4_Bìa lỗ A4
COVA4BBìa A4 màu xanh dương
COVPL80_Bìa ép Plastic 80Mic
COVPL80-A3Bìa ép Plastic 80Mic-A3
PENDQ_Bút dạ quang sáp vặn
PENDQGBút dạ quang xanh
. . . .. . . .

Thân mến!
 
Upvote 0
Cảm ơn Bạn đã tìm hướng xử lý không thêm sheet DG và viết code lại cho mình.
Mình vừa xem file thì có một số lỗi. Bạn giúp mình với nhé.
1> Khi nhập mã vật tư vào thì cột tên vật tư và đơn vị tính nó nhảy bị sai. (có thể cột Mã VT, Tên vật tư, ĐVT không cần nhập tự động... mình sẽ nhập bằng tay)
1> Bạn có thể để thêm sheet DG giúp mình được không? vì để vậy sẽ còn thấy đơn giá củ (lỡ may bị xóa cột đơn giá thì có cái để cập nhật lại.)
1.Rất đáng tiếc là tôi không kiêm tra kỹ nên mới để có sai sót. Thế nên tôi mới nói bạn phải kiểm tra cho kỹ. Hãy thử file đính kèm đã sửa lỗi sai tên và ĐVT.
(có thể cột Mã VT, Tên vật tư, ĐVT không cần nhập tự động... mình sẽ nhập bằng tay) Dùng code sẽ hạn chế được nhập tránh bị sai sót đáng tiếc và nhanh hơn.
Bạn nên đã đọc bài của Anh SA_DQ và sửa lại dữ liệu theo hướng đó.

Tôi đâu có xóa Sheet ĐONGIA của bạn, Bạn cứ để sheets ĐONGIA theo ý bạn thôi. Có điều là nếu dùng thêm 1 trường (cột) để xác định thời gian áp dụng đơn giá từng loại VT như tôi đề xuất (và code cũng theo hướng đó) mà muốn lưu giữ lịch sử thay đổi đơn giá thì bạn hoàn toàn có thể sử dụng Sheet DONGIA (như bạn đang dùng) để làm việc này.
Trong trường hợp muốn cập nhật lại bảng nhập liệu như bạn nói (....vì để vậy sẽ còn thấy đơn giá củ (lỡ may bị xóa cột đơn giá thì có cái để cập nhật lại.) thì phải viết thêm code và đi theo hướng khác. (có thể là Sheet Danhmuc sẽ không có các Trường (cột) thời gian áp dụng, đơn giá nhập, đơn giá xuất, và sheet DONGIA sẽ không có các cột Tên VT, ĐVT ( chỉ gồm: Thời gian áp dụng đơn giá từ, Mã VT (đã sửa lại theo hướng Anh SA_DQ đã gợi ý), đơn giá Xuất, đơn giá Nhập.
Bạn đưa file giả định của bạn nên đi (Tất nhiên là dữ liệu phải chuẩn thì code sẽ làm việc đúng ý định). Tôi sẽ nghiên cứu và code cho bạn theo hướng này.
 

File đính kèm

  • Book1-1 (1).xlsm
    33.7 KB · Đọc: 8
Upvote 0
@Chủ bài đăng: Bạn tạo hệ mã chưa được ngon lành cho lắm; Có thể giờ chưa có vấn đề gì, nhưng tiềm ẩn nguy cơ trong 1 ngày thời tiết xấu nào đó sẽ đến với bạn:

MA_VLSPHHTENDviKHOGIÁ NHẬPGIÁ XUẤT
COVA4Bìa lỗ A4XấpVPP
1500​
2000​
COVA4BBìa A4 màu xanh dươngRamVPP
34000​
34500​
COVA4GBìa A4 màu xanh lá câyCáiVPP
500​
1000​
COVLBìa láCáiVPP
100​
600​
COVPL80Bìa ép Plastic 80MicXấpVPP
1500​
2000​
COVPL80-A3Bìa ép Plastic 80Mic-A3XấpVPP
1700​
2200​
PENCP01Bút xóa CP01CâyVPP
4500​
5000​
PENDQBút dạ quang sáp vặnCâyVPP
7000​
7500​
PENDQGBút dạ quang xanhCâyVPP
8000​
8500​
PENDQVBút dạ quang vàngCâyVPP
8000​
8500​
. . . .. . . .. . . .. . .

Lỗi sẩy ra khi Excel tài lanh khi bạn xài phương thức nào đó với ký tự đại diện "*" sau này.
Nếu là mình thì mình sẽ thêm như:

MA_VLSPHHTEN
COVA4_Bìa lỗ A4
COVA4BBìa A4 màu xanh dương
COVPL80_Bìa ép Plastic 80Mic
COVPL80-A3Bìa ép Plastic 80Mic-A3
PENDQ_Bút dạ quang sáp vặn
PENDQGBút dạ quang xanh
. . . .. . . .

Thân mến!
Dạ! con cảm ơn Bác đã quan tâm chủ đề của con ạ! tối nay con sẽ thử tối ưu lại Mã vật tư. nếu có gì không hiệu quả xin bác chỉ dẫn con với ạ!
Bài đã được tự động gộp:

1.Rất đáng tiếc là tôi không kiêm tra kỹ nên mới để có sai sót. Thế nên tôi mới nói bạn phải kiểm tra cho kỹ. Hãy thử file đính kèm đã sửa lỗi sai tên và ĐVT.
(có thể cột Mã VT, Tên vật tư, ĐVT không cần nhập tự động... mình sẽ nhập bằng tay) Dùng code sẽ hạn chế được nhập tránh bị sai sót đáng tiếc và nhanh hơn.
Bạn nên đã đọc bài của Anh SA_DQ và sửa lại dữ liệu theo hướng đó.

Tôi đâu có xóa Sheet ĐONGIA của bạn, Bạn cứ để sheets ĐONGIA theo ý bạn thôi. Có điều là nếu dùng thêm 1 trường (cột) để xác định thời gian áp dụng đơn giá từng loại VT như tôi đề xuất (và code cũng theo hướng đó) mà muốn lưu giữ lịch sử thay đổi đơn giá thì bạn hoàn toàn có thể sử dụng Sheet DONGIA (như bạn đang dùng) để làm việc này.
Trong trường hợp muốn cập nhật lại bảng nhập liệu như bạn nói (....vì để vậy sẽ còn thấy đơn giá củ (lỡ may bị xóa cột đơn giá thì có cái để cập nhật lại.) thì phải viết thêm code và đi theo hướng khác. (có thể là Sheet Danhmuc sẽ không có các Trường (cột) thời gian áp dụng, đơn giá nhập, đơn giá xuất, và sheet DONGIA sẽ không có các cột Tên VT, ĐVT ( chỉ gồm: Thời gian áp dụng đơn giá từ, Mã VT (đã sửa lại theo hướng Anh SA_DQ đã gợi ý), đơn giá Xuất, đơn giá Nhập.
Bạn đưa file giả định của bạn nên đi (Tất nhiên là dữ liệu phải chuẩn thì code sẽ làm việc đúng ý định). Tôi sẽ nghiên cứu và code cho bạn theo hướng này.
Thành thật cảm ơn những gì mà bạn đã dành cho mình trong thời gian qua. mình sẽ hiệu chuẩn lại dữ liệu, mã vật tư và phương án thuận lợi nhất. Mong bạn giúp đỡ mình nhé.
 
Upvote 0
Dạ! con cảm ơn Bác đã quan tâm chủ đề của con ạ! tối nay con sẽ thử tối ưu lại Mã vật tư. nếu có gì không hiệu quả xin bác chỉ dẫn con với ạ!
Bài đã được tự động gộp:


Thành thật cảm ơn những gì mà bạn đã dành cho mình trong thời gian qua. mình sẽ hiệu chuẩn lại dữ liệu, mã vật tư và phương án thuận lợi nhất. Mong bạn giúp đỡ mình nhé.
Mình góp ý chút xíu, nếu file ít mã vật tư thì bạn nên tạo mã vật tư theo phương pháp thực tế đích danh đi, nếu giá thay đổi thì tạo 1 mã mới (ví dụ: Bìa kiếng có mã COVK_01, COVK_02, COVK_03 v.v... Như vậy khi giá thay đổi thì sẽ linh động hơn. Còn nếu thêm cột "thời gian áp dụng giá từ ngày" thì mình nghĩ phải có 2 cột với 2 mốc Từ ngày và Đến ngày thì khi tra giá mới chính xác.
 
Upvote 0
Mình góp ý chút xíu, nếu file ít mã vật tư thì bạn nên tạo mã vật tư theo phương pháp thực tế đích danh đi, nếu giá thay đổi thì tạo 1 mã mới (ví dụ: Bìa kiếng có mã COVK_01, COVK_02, COVK_03 v.v... Như vậy khi giá thay đổi thì sẽ linh động hơn. Còn nếu thêm cột "thời gian áp dụng giá từ ngày" thì mình nghĩ phải có 2 cột với 2 mốc Từ ngày và Đến ngày thì khi tra giá mới chính xác.
Cảm ơn Bạn đã góp ý giúp mình. mình cũng vừa mới biên xong bộ mã mới nhưng cũng chưa đầy đủ. Bạn tư vấn giúp mình có khả thi không nhé.
File mình chỉ quản lý theo cửa hàng bán văn phòng phẩm, Bảo hộ lao động nên cũng ít mã vật tư. khoảng dưới 1000 mã thôi.
Tạo mã theo cách của bạn cũng rất tốt. để mình tham khảo thêm.
 
Upvote 0
Em đã biên mã vật tư mới, thay đổi phương án bỏ thêm Sheet DG.
1. / Khi không có phát sinh thay đổi đơn giá trong kỳ thì vẫn dùng đơn giá ở Sheet Danh Mục. còn trong kỳ có thay đổi về đơn giá của loại vật tư nào đó thì em cập nhật ở sheet DG.
2./ Nhờ Anh xem giúp em: Khi em đụng chạm đến dữ liệu ở sheet Danhmuc thì nó vẫn bị xóa dữ liệu ở sheet Nhaplieu. có cách nào mà không ảnh hưởng đến các côt khác ngoài cột đơn giá không anh nhỉ?
em gửi file. Nhờ Bác @SA_DQ, anh @qtm1987 tư vấn thêm về cách biên mã vật tư và cách tạo mã tự động giúp con với. Anh @HUONGHCKT giúp em code với nhé.
Em Cảm ơn mọi người rất nhiều.
 

File đính kèm

  • Book1-2.xlsm
    38.9 KB · Đọc: 4
Upvote 0
(*)Mình góp ý chút xíu, nếu file ít mã vật tư thì bạn nên tạo mã vật tư theo phương pháp thực tế đích danh đi, nếu giá thay đổi thì tạo 1 mã mới (ví dụ: Bìa kiếng có mã COVK_01, COVK_02, COVK_03 v.v... Như vậy khi giá thay đổi thì sẽ linh động hơn.
Còn nếu thêm cột "thời gian áp dụng giá từ ngày" thì mình nghĩ phải có 2 cột với 2 mốc Từ ngày và Đến ngày thì khi tra giá mới chính xác.
(*) Đó là bạn khuyến cáo thêm (như người xưa thường gọi là) tiếp vĩ ngữ cho 1 mã HH
Chứ cái góc của mã vẫn là những từ trước ký tự '_' ; Có như vậy mới tiện hơn trong khâu thống kê, kiểm kho, tạo thẻ kho. . . .
[Cũng nói trước là mình chưa có tí gì kinh nghiệm trong chuyện đơn giá thay đổi theo thời gian này]
Nhưng cũng mạnh dạn nêu 1 ý tưởng:
Thay vì ta thêm tiếp vĩ ngữ _00, _01, _02,. . . . cho 1 hàng hóa cụ thể nào đó, sao ta không đưa mã năm-tháng-ngày vô luôn trong mã, ví dụ như
COVID09A
Ở đâycon số 0 ấn định năm 2020, (năm 2021 sẽ là số 1, năm 2030 sẽ là 'A', . . .
Con số 9 (ở giữa) biểu thỉ cho tháng 9, tháng 10 sẽ là A;
Ký tự cuối chỉ ngày (A là ngày 10, C là ngày 12,. . . .)
Đến đây các bạn sẽ phát sinh rằng rối quá thế!
Chuyện rối rắm này có thể nhờ 1 (cặp) hàm UDF chuyển đổi thuận nghịch từ số liệu ngày-tháng-năm sang mã năm-tháng-ngày & ngược lại

Rất mong các ý kiến đóng góp của các bạn về ý tưởng trên.
 
Upvote 0
Em đã biên mã vật tư mới, thay đổi phương án bỏ thêm Sheet DG.
1. / Khi không có phát sinh thay đổi đơn giá trong kỳ thì vẫn dùng đơn giá ở Sheet Danh Mục. còn trong kỳ có thay đổi về đơn giá của loại vật tư nào đó thì em cập nhật ở sheet DG.
2./ Nhờ Anh xem giúp em: Khi em đụng chạm đến dữ liệu ở sheet Danhmuc thì nó vẫn bị xóa dữ liệu ở sheet Nhaplieu. có cách nào mà không ảnh hưởng đến các côt khác ngoài cột đơn giá không anh nhỉ?
em gửi file. Nhờ Bác @SA_DQ, anh @qtm1987 tư vấn thêm về cách biên mã vật tư và cách tạo mã tự động giúp con với. Anh @HUONGHCKT giúp em code với nhé.
Em Cảm ơn mọi người rất nhiều.
Tôi không hiểu ý bạn. Mà thêm sheet để theo dõi nữa đồng nghĩa với thêm thời gian để nhập liệu cho nó.
Tôi gửi bạn file tôi đã làm cho trường hợp đơn giá có thay đổi và được cập nhật ở Sheet DG (một đơn giá có thể có nhiều bản ghi-mỗi 1 bản ghi phản ánh thời gian áp dụng đơn giá...), Trong file này tôi vẫn lấy mã VT theo file cũ của bạn . Nếu bạn thấy dùng được thì có thể theo hướng anh SA_DQ để làm mã mới nhé.
 

File đính kèm

  • Tim Đơn theo thời gian áp dụng.xlsm
    37.5 KB · Đọc: 5
Upvote 0
Tôi không hiểu ý bạn. Mà thêm sheet để theo dõi nữa đồng nghĩa với thêm thời gian để nhập liệu cho nó.
Tôi gửi bạn file tôi đã làm cho trường hợp đơn giá có thay đổi và được cập nhật ở Sheet DG (một đơn giá có thể có nhiều bản ghi-mỗi 1 bản ghi phản ánh thời gian áp dụng đơn giá...), Trong file này tôi vẫn lấy mã VT theo file cũ của bạn . Nếu bạn thấy dùng được thì có thể theo hướng anh SA_DQ để làm mã mới nhé.
Dạ vâng. Em cảm ơn anh rất nhiều ạ.
 
Upvote 0
Web KT

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

Back
Top Bottom