Hỏi về code xác định số trang cần in !

Liên hệ QC

xmanpro

Thành viên mới
Tham gia
7/7/08
Bài viết
22
Được thích
3
Chào cả nhà ! Anh chị có thể viết dùm em code để hiện thông báo số trang cần in mà không cần Print Preview để kiểm tra không ạ ! Thanhk cả nhà nhìu :-=
 
Xin cho mình mượn chủ đề này để hỏi. Mình có đoạn code sau đây nhưng sao nó không chạy đúng. Đoạn này nói rằng trong khi Roku chạy từ m đến n thì nếu e khác 0 (hoặc mình làm điều kiện khác cũng được, ví dụ e = 7 hoặc e > 1 hoặc vv...) thì ô C3 sẽ là số Roku và in sheet 5, còn nếu không thì sheet 5 sẽ bằng Roku và tiếp tục chạy đoạn for ... next kia, nhưng sao mình làm hoài mà thử không được. Không biết đoạn này có lỗi gì không, nhờ các bạn chỉ giúp. Kết quả khi thử cho đoạn này là nó chỉ thay thế Roku vào ô C3 mà không in kể cả khi e khác 0. Còn nếu mình đưa điều kiện e=0 và cho phần in xuống dưới thì nó in toàn bộ, nhờ các bạn. Cám ơn nhiều.

Sub InRokunin()
Sheet5.PivotTables("rokunin").PivotCache.Refresh
Dim e As Integer
e = Sheet5.[d2]
m = Sheet5.[d1]
n = Sheet5.[e1]

For Roku = m To n
If e <> 0 Then
Sheet5.[c3] = Roku
Sheet5.PrintOut
Else
Sheet5.[c3] = Roku
End If
Next
End Sub
 
Upvote 0
Code này sẽ không chạy được nếu m>n. Bạn thử xem lại dữ liệu xem có đúng vậy không?
Còn cái lệnh Sheet5.[c3] = Roku thì có thể chỉnh lại như sau:
Mã:
Sub InRokunin()
Sheet5.PivotTables("rokunin").PivotCache.Refresh
Dim e As Integer
e = Sheet5.[d2]
m = Sheet5.[d1]
n = Sheet5.[e1]

For Roku = m To n
If e <> 0 Then Sheet5.PrintOut
Sheet5.[c3] = Roku
Next
End Sub
Thân.
 
Upvote 0
Chưa được bạn ạ, nó chỉ chạy ở đoạn sheet5.[c3] = roku mà không chạy printout
mình có một đoạn tương tự ở một sheet khác như dưới đây thì được, nhưng khi thêm vào điều kiện if cho e như trên thì hoặc là nó in hết, hoặc là không in gì cả, trong khi mình muốn nó in những cái mà e, tức là ô D2 có giá trị thôi.

For Inco = m To n
Sheet4.[c40] = Inco
Sheet4.PrintOut
Next

Đoạn của sheet5 trên cũng vậy, nếu như dưới đây thì chạy và in toàn bộ từ m đến n (m luôn nhỏ hơn n) nhưng nếu thêm điều kiện thì nó lại không in hoặc in hết.

For Roku = m To n
Sheet5.[c3] = Roku
Sheet5.PrintOut
Next
 
Lần chỉnh sửa cuối:
Upvote 0
Sao bạn ko gửi file đó lên nhỉ? Để mình test lại xem sao?
Còn Printout thì in hết là phải rồi? Thế bạn muốn in cái giá trị D2 là sao?
Bạn làm mình ngu luôn rồi?
Thân.
 
Upvote 0
Dưới đây là file đính kèm, nhờ bạn xem dùm. Cám ơn nhiều.
 

File đính kèm

Upvote 0
Theo mình thì code này sẽ chạy được. Bạn test thử coi.
Mã:
Sub InRokunin()
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Dim c As Integer
e = Sheet3.[b1]
m = Sheet3.[d1]
n = Sheet3.[e1]
For Roku = m To n
Sheet3.[b1] = Roku
If Sheet3.[a11] <> "" Then Sheet3.PrintOut
Next
End Sub
Thân.
 
Lần chỉnh sửa cuối:
Upvote 0
Được rồi, nhưng mà mình vẫn chưa hiểu tại sao điều kiện kia thì lại không được? Bạn có thể giải thích để mai mốt tránh những điều kiện không được được không?
 
Upvote 0
Mục đích của bạn là in những dữ liệu có Bango = 3 tức là có số dòng >6. Vậy thì chữ e sẽ chạy từ 1 -> 5. Vậy bạn viết e <> 0 tức là nó sẽ lấy hết các chỉ số e = {1,2,3,4,5} luôn. Vậy chẳn phải là in hết hay sao?
Ở đây đúng lý ra là chỉ lấy e = 3 thoải yêu cầu số dòng >6 mà thôi. Và nếu bạn biết trước e = 3 (True) thì tốt quá rùi. Nhưng ở đây bạn đâu có biết số dòng của e = 3 thoả đâu nên phải xét ở 1 điều kiện khác. Điều kiện gì đó mà thoả đề bài và không phụ thuộc vào e. Vậy mình sẽ xem đến vị trí thứ 7 (tức dòng thứ 7 của dữ liệu). Nếu nó có tồn tại thì thoải điều kiện rùi.
Đại khái là như vậy? Bạn phải tự nghiên cứu thêm thôi.
Thân.
 
Upvote 0
Web KT

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

Back
Top Bottom