Xin giúp về xuất data từ 1 row ra form in

  • Thread starter Thread starter xhuyng
  • Ngày gửi Ngày gửi
Liên hệ QC

xhuyng

Thành viên mới
Tham gia
3/9/10
Bài viết
10
Được thích
1
Xin chào các anh chị,

Mình vốn không rành rẽ gì về VBA, dạo này toàn lên đây học hỏi kiến thức của các bạn, cộng thêm cuốn sách Lập trình VBA trong Excel ver. 2 làm bửu bối nhập môn.

Mình cũng đã võ vẽ lập trình cho các form nhập liệu để phục vụ công việc được rồi, chương trình còn rất đơn giản, nhưng với mình thì cũng tạm được. Hiện nay, đã có thể tính toán và lưu dữ liệu nhập vào 1 sheet đầy đủ. Tuy nhiên, mình chưa biết cách để xuất dữ liệu ra trang in theo 1 form định sẵn. Mong các bạn giúp.

Ý mình như sau:

- Mình đã có sẵn 1 sheet chứa data.
- Mình muốn xây dựng 1 button ở đầu sheet đó (cho dù sheet rất dài, phải cuộn xuống nhưng button đó vẫn cố định phía trên). Button này tạm gọi là "PRT"
- Khi mình chọn bất kỳ 1 cell nào, thì nếu bấm button "PRT", nó sẽ lấy data của row đó, đưa vào 1 form (nói form cho sang, chứ thực ra là 1 sheet khác, đã có canh chỉnh để in data ra giấy).

Vướng mắc chủ yếu là mình không biết cách để button "PRT" cố định và không biết cách để xác định row hiện hành (qua đó mới lấy data được).

Xin các anh chị giúp đỡ cho (nếu có code tham khảo luôn thì tốt quá).

Chân thành cảm ơn.
 
Mình attach file, nhờ các bác xem qua cho.

Luôn tiện, xin cho hỏi sao mình không thể save file dưới dạng xls được mà cứ phải là xlsm (Excel 2010)

Thêm nữa, trong form, muốn tự động lấy ngày hiện hành cho 1 label thì làm thế nào ạ?

Cám ơn các bác.
 

File đính kèm

Upvote 0
Bạn chuyển sang Exc 2003 được không?
 
Upvote 0
Cám ơn bác sealand đã quan tâm.

Mình gửi lại file đã save ở Excel 97 - 2003, bác xem giúp ạ.
 

File đính kèm

Upvote 0
Mình xem đã nhiều lần nhưng không biết bắt đầu từ đâu, làm cho xong thì cảm thấy áy náy quá. Vậy mình có mấy ý kiến trước:
-Việc tổ chức lại Sheet Records là cần thiết. Làm sao cho dữ liệu càng gọn càng tốt, chủ yếu dùng mã thay cho nội dung tự gõ.
-Mình chưa từng thấy 1 cái phiếu đề nghị xuất hàng nào na ná thế này cả. Đã thế 1sheet cho loại 1 loại hàng, 1 sheet cho 2 loại hàng. Rồi đến lúc có n loại hàng thì tính sao đây. Vậy mẫu phiếu này có thể thay đổi không?
 
Upvote 0
Cám ơn bác sealand đã có góp ý cho. Mình xin giải thích thêm:

1. Thực ra, nội dung trên sheet records không tự gõ nhiều, chủ yếu là tự động lấy từ sheet data qua (vd: trong form nhập liệu của mình, khi mình gõ mã HĐ thì nó sẽ tự điền các thông tin như: tên hàng, giá hàng, ngày TKHQ, ... vào sheet records [na ná như Data Validation ấy mà]).

2. Riêng đối với đại lý, bên mình có nhiều, và mã cho mỗi đại lý tới 4 con số, mà chẳng theo qui luật gì (cái này do lịch sử để lại) nên viêc nhớ tên đại lý đơn giản hơn mã rất nhiều.

3. Thực tế công viêc bên mình, khi xuất hàng sỉ cho các đại lý, thường chỉ xuất 1 mặt hàng, thỉnh thoảng có 2 mặt hàng trên cùng 1 phiếu. Để tiện theo dõi, ở sheet record, mình cho mỗi mặt hàng trên phiếu xuất là 1 row (record), nhưng phân biệt là nếu 2 mặt hàng cùng nằm trên 1 phiếu xuất thì ở field Ghi Chú có đánh dấu "*" và 2 record đó nằm liền kề nhau.

4. Đây là đặc thù công việc bên mình, không thay đổi mẫu phiếu được. Việc nhập liệu và tính toán, xử lý số liệu mình đã làm được.

Vấn đề của mình muốn nhờ các bác giúp đỡ là:

a) Đối với sheet record, mình muốn các button Nhập liệu & PRT luôn luôn "always on top". Tuy nhiên, nếu việc này khó, mình có thể thực hiện đơn giản bằng Frezee Panes của Excel cũng được.

b) Vậy vấn đề chủ yếu của mình là xin giúp việc xuất data từ sheet records qua sheet Cat Phieu. Sao cho khi minh chọn 1 cell bất kỳ, rồi bấm nút PRT thì sẽ lấy data của row có cell mình chọn đưa qua form Cat Phieu. Đại khái các bác giúp chuyến 1 vài field thôi cũng được, còn lại phải xử lý, tính toán trước khi điền vào các field khác hế nào, mình sẽ làm rồi theo cách của các bác chỉ mà tiến hành.

Cám ơn và chúc các bác (đặc biệt là bác sealand :) ) một ngày vui vẻ
 
Lần chỉnh sửa cuối:
Upvote 0
1/Bạn thêm vào code của Form để gán ngày hiện tại cho Label như sau:

Mã:
Private Sub UserForm_Initialize()
Me.Label18.Caption = Format(Date, "dd/mm/yyyy")
End Sub
2/Tại sheet Record bạn chọn dòng nào đó rồi nhấn in sẽ xem-in dòng đó. Bạn có thể chọn phiếu trong ô màu vàng cuae sheet Cut

3/Mình để bạn thử sức chọn 1 loạt trên sheet Record rồi tự động in toàn bộ phiếu đã chọn (Không được tính sau)
Mình dồn 2 loại phiếu làm 1
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
@sealand: Cám ơn bác nhiều, sáng giờ lượn mấy vòng rồi, giờ mới thấy reply của bác. Để mình lấy về xem sao.
 
Upvote 0
Báo cáo bác sealand, nhờ hướng dẫn của bác, mình đã làm được theo đúng như yêu cầu ban đầu của mình. Việc gán các công thức riêng để tính toán cũng xong cả. Nói chung là phục vụ công việc thế là tạm ổn.

Tuy nhiên, việc chọn nhiều record rồi tự động in toàn bộ phiếu đã chọn mình chưa làm được, vẫn đang in từng phiếu. Bữa trước mình có thấy 1 topic trên GPE có 1 bài hướng dẫn gần tương tự, nhưng giờ tìm lại mãi chưa thấy. Bác hướng dẫn cho thì tốt quá. Hiện nay mình cũng chậm (già quá rồi mà. Hix..) , chưa biết gì mấy về VBA mà lại ít thời gian nên còn kém lắm.

Thêm nữa, hiện nay thủ tục in của mình:

Mã:
Sub InPhieu()
    ActiveWindow.SelectedSheets.PrintOut
End Sub

Chỉ cho phép in ra máy in đã chọn sẵn cũng hơi bất tiện, vì máy tính có nối với nhiều máy in mạng, nên nhiều lúc in nhầm máy (máy in kim để in HĐ, máy Laser để in phiếu). Vậy nên có lệnh nào trước khi in, gọi được cửa sổ chọn máy in không bác? Kiểu như Ctrl+P đó ạ.

P/S: bữa nào bác rảnh, nếu ở HCMC thì rất hân hạnh xin được mời bác chầu cafe, ta giao lưu tí bác nhỉ :)
 
Upvote 0
Ôi, thành thật xin lỗi bác. Mình nghĩ là anh em trẻ nên muốn để tự nghiên cứu phát triển sẽ nhanh "có vốn" hơn.Sắp đi dự đám cưới nên khất bác sau 1 chút.
Riêng việc chọn máy in bác sửa code in phiếu như sau nhé:

Mã:
Sub InPhieu()
Application.Dialogs(xlDialogPrinterSetup).Show
ActiveWindow.SelectedSheets.PrintOut
End Sub


Rất cám ơn thịnh tình của bác, nhưng mình lại ở Hải Phòng cơ. Thôi mong được giao lưu với nhau thường xuyên là vui rồi. Thanks!
 
Upvote 0
Cám ơn bác rất nhiều. Bác nhiệt tình quá. Thật tình, nếu không có bác giúp cho, mình cứ loay hoay mãi. Chỉ có 1 dòng lệnh thôi là mọi thứ trở nên đơn giản hẳn. VBA quả thật càng ngày càng thấy hay :), chỉ tiếc là mình chẳng có bài bản gì cả.

Khi nào có điều kiện, mong sẽ được gặp bác sớm.

Mình có ông anh con bác ruột, đang làm sếp nho nhỏ CSGT ở HP nên trước thỉnh thoảng cũng ra đó chơi. Toàn đi Đồ Sơn du lịch bác ạ....
 
Upvote 0
Như đã hứa, mình gửi thêm phần chọn phiếu
Để thử, mình để chế độ Prinview, thử xong xoá dòng nay chuyển sang in
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom