CODE tự nhảy số từ A đến B để in trong EXCEL (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

hhhhgggg

Thành viên mới
Tham gia
19/10/12
Bài viết
37
Được thích
0
Em có một đọan code sử dụng để in các biên bản trong excel như sau ạ:
Private Sub CommandButton1_Click()
Sheets("NB").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=1, Copies:=1, Collate _
:=True
Sheets("PYC").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=1, Copies:=1, Collate _
:=True
Sheets("XD").Select
ActiveWindow.SelectedSheets.PrintOut From:=1, to:=2, Copies:=1, Collate _
:=True
Sheets("NB").Select
End Sub

Em phải in lặp đi lặp lại thao tác như sau: giả sử em phải in biên bản từ số biên bản 1 đến 1000
thì em phải nhập số 1 vào ô "O2" ở sheet "NB" và bấm vào nút CommandButton1_Click
sau đó lại nhập số 2 vào ô "O2" ở sheet "NB" và bấm vào nút CommandButton1_Click...
sau đó lại nhập số 3 vào ô "O2" ở sheet "NB" và bấm vào nút CommandButton1_Click...
cứ như vậy cho đến 1000. Các cao thủ excel lập giúp em đoạn code để nó cho phép mình nhập giá trị đầu và giá trị cuối của biên bản cần in và in một loạt luôn ạ. Chú ý rằng đoạn code phải tự nhập giá trị vào ô "O2" để các hàm khác trong excel của em nó lấy giá trị đó để tham chiếu giá trị để ra kết quả để in. Em gửi kèm file để các cao thủ dễ hiểu ạ.
 

File đính kèm

Tôi gửi lại file. Bạn đọc code thấy dòng có chú thích
'them
là do tôi viết thêm.

Đây là viết theo yêu cầu của bạn (in hết). Có thể sang sheet "list bien ban", chọn 1 cột đánh dấu để sẽ in, chương trình sẽ nhận ra dòng nào cần in. Có thể thêm nhiều thông tin khác như ngày tháng...

Góp ý thêm: Nội dung các sheet cần in có thể dồn vô 1 sheet, chiếm một số cột. Dễ quản lý hơn.
 

File đính kèm

Upvote 0
Bạn làm thế này nhé!
1. Ngay đầu đoạn code, nhập 1 biến tùy ý, giả sử là Sobanin =application.inputbox(). Inputbox thế nào thì bạn tìm hiểu nhé!
2. Sau đó, đưa cả đoạn code của bạn vào vòng lặp For i=1 to Sobanin (đương nhiên vòng lặp này sau câu lệnh ở 1.
3. Sau mỗi câu lệnh Sheet().Select, cho thêm 1 lệnh Activesheet.Range("O2").value=i
Đơn giản thế thôi bạn!
 
Upvote 0
Tôi gửi lại file. Bạn đọc code thấy dòng có chú thích
'them
là do tôi viết thêm.

Đây là viết theo yêu cầu của bạn (in hết). Có thể sang sheet "list bien ban", chọn 1 cột đánh dấu để sẽ in, chương trình sẽ nhận ra dòng nào cần in. Có thể thêm nhiều thông tin khác như ngày tháng...

Góp ý thêm: Nội dung các sheet cần in có thể dồn vô 1 sheet, chiếm một số cột. Dễ quản lý hơn.
Cảm ơn bạn nhiều vì đã giúp đỡ. Nhưng chắc anh không để ý yêu cầu ạ, ở đây em cần in từ biên bản A đến biên bản B.
Tức là khi bấm vào IN_GIANG thì nó sẽ hiện lên bảng thông báo nhập số biên bản in từ biên bản ... ( mình nhập số vào ) đến biên bản ... ( mình nhập số vào ) ạ. Vì không phải lúc nào mình cũng cần in toàn bộ ạ. Bạn sửa code giúp mình một chút được không ạ ! Thanks !
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn làm thế này nhé!
1. Ngay đầu đoạn code, nhập 1 biến tùy ý, giả sử là Sobanin =application.inputbox(). Inputbox thế nào thì bạn tìm hiểu nhé!
2. Sau đó, đưa cả đoạn code của bạn vào vòng lặp For i=1 to Sobanin (đương nhiên vòng lặp này sau câu lệnh ở 1.
3. Sau mỗi câu lệnh Sheet().Select, cho thêm 1 lệnh Activesheet.Range("O2").value=i
Đơn giản thế thôi bạn!
Anh sửa cụ thể trên file giúp em đựơc không ? vì em không biết lập trình ạ !
Làm sao để khi bấm in thì nó hiện lên:
1. Nhập biên bản bắt đầu in ( Ta nhập số bắt đầu in giả sử nhập là 5 )
2. Nhập biên bản kết thúc in ( Ta nhập số bắt đầu in giả sử nhập là 10 )
==> nó sẽ tự in từ 5 đến 10 ạ !
 
Upvote 0
Bạn tham khảo nhé, mình chưa xem file bạn nên bạn chỉnh sửa lại cho phù hợp.

Sub inbb()

Sheets("NB").Select

For i = Range("O4").Value To Range("O5").Value 'theo vd trên thì O4 là số bắt đầu in, O5 là số kết thúc in

Range("O2").Value = i
ActiveSheet.PrintOut preview:=False 'in


Next
' tiếp tục tương tự với các sheét khác
End Sub
 
Upvote 0
Bạn tham khảo nhé, mình chưa xem file bạn nên bạn chỉnh sửa lại cho phù hợp.

Sub inbb()

Sheets("NB").Select

For i = Range("O4").Value To Range("O5").Value 'theo vd trên thì O4 là số bắt đầu in, O5 là số kết thúc in

Range("O2").Value = i
ActiveSheet.PrintOut preview:=False 'in


Next
' tiếp tục tương tự với các sheét khác
End Sub
Code này không hiện lên bảng thông báo nhập số biên bản bắt đầu in và kết thúc in !
Làm sao để khi bấm in thì nó hiện lên:
1. Nhập biên bản bắt đầu in ( Ta nhập số bắt đầu in giả sử nhập là 5 )
2. Nhập biên bản kết thúc in ( Ta nhập số bắt đầu in giả sử nhập là 10 )
==> nó sẽ tự in từ 5 đến 10 ạ , của sheet "NB" ; "PYC" " và "XD" ạ
 
Upvote 0
Bạn tham khảo nhé, mình chưa xem file bạn nên bạn chỉnh sửa lại cho phù hợp.

Sub inbb()

Sheets("NB").Select

For i = Range("O4").Value To Range("O5").Value 'theo vd trên thì O4 là số bắt đầu in, O5 là số kết thúc in

Range("O2").Value = i
ActiveSheet.PrintOut preview:=False 'in


Next
' tiếp tục tương tự với các sheét khác
End Sub

nhập số 5 vào ô O4, số 10 vào ô O5 và chạy sub nhé
 
Upvote 0
Sub inbb()

Dim i, A, B As Integer

Sheets("NB").Select

A = InputBox("In bien ban tu so")
B = InputBox("den so")

For i = A To B

Range("O2").Value = i
ActiveSheet.PrintOut preview:=False 'in

Next

' tiếp tục tương tự với các sheét khác

End Sub
 
Upvote 0
Nhắc lại nha:
Có thể sang sheet "list bien ban", chọn 1 cột đánh dấu để sẽ in, chương trình sẽ nhận ra dòng nào cần in...

Như vậy cũng tiện, không sợ in lại hay in sót.
 
Upvote 0
...
Các cao thủ excel lập giúp em đoạn code để nó cho phép mình nhập giá trị đầu và giá trị cuối của biên bản cần in và in một loạt luôn ạ.

Chú ý là cột A (SBB) chứa cả số lẫn văn bản thì làm sao để biết giá trị đầu và giá trị cuối của biên bản . Nên nếu muốn tự động thì phải FOR theo số hàng
 
Upvote 0
Web KT

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

Back
Top Bottom