Nhờ các ACE sửa lỗi VBA Uniform lệnh in trong EXCEL (1 người xem)

Liên hệ QC

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

tuananh1202

Thành viên mới
Tham gia
8/12/10
Bài viết
14
Được thích
0
Giới tính
Nam
các Anh chị em giúp em sửa lỗi và xem em em bị sai chỗ nào mà lệnh oke vẫn không chạy được ạ. em là lính mới, copy được một số code của anh sealand, nhưng áp vô bảng của em thì không chạy đc.
Em cám ơn anh chị.
 

File đính kèm

các Anh chị em giúp em sửa lỗi và xem em em bị sai chỗ nào mà lệnh oke vẫn không chạy được ạ. em là lính mới, copy được một số code của anh sealand, nhưng áp vô bảng của em thì không chạy đc.
Em cám ơn anh chị.

Vừa mở file đã báo lỗi ngay tại hàm này:
Mã:
Function[B][COLOR=#ff0000] Sheet[/COLOR][/B]()
Application.Volatile
Sheet = Application.ThisCell.Parent.Name
End Function
Hết tên đặt rồi hay sao lại lấy đúng ngay từ khóa của Excel đặt cho hàm vậy bạn?
 
Báo cáo bác, cái hàm này là em dùng để lấy tên Sheet, làm giá trị cho Cell. Vì em có thói quen sửa tên sheet thì Tiêu đề của trang cũng nhảy theo. Ví dụ khi em gõ lệnh =Sheet() vào ô A1. Thì tại Cell A1 đó sẽ trả về giá trị của tên Sheet. Trong bản của em có 2 module không cần quan tâm là module tấy tên sheet làm tên tiêu đề, và module Unhide tất cả các sheet.

Bác không cần quan tâm đến Module đó đâu ạ. các Anh chị, các bác nào có thể giải quyết giúp em cái uniform ấy ạ. Em thử hết cách nhưng khi nhấn nút Print, hiện ra bảng tùy chọn, sau đó nhấn lệnh Print thì máy vẫn ko thực hiện lệnh in ạ.

Em bị bế tắc, vì em quá gà nên đi coppy của bác sealand, nên bây giờ không biết bị làm sao luôn...
 
Vừa mở file đã báo lỗi ngay tại hàm này:
Mã:
Function[B][COLOR=#ff0000] Sheet[/COLOR][/B]()
Application.Volatile
Sheet = Application.ThisCell.Parent.Name
End Function
Hết tên đặt rồi hay sao lại lấy đúng ngay từ khóa của Excel đặt cho hàm vậy bạn?

Dạ vâng, cái đó không sao cả bác ạ, em có thể đặt lại là "Tensheet" cũng được, mặc dù sao nó chạy vẫn ổn, không báo lỗi bác ạ...hjhj
 
Báo cáo bác, cái hàm này là em dùng để lấy tên Sheet, làm giá trị cho Cell. Vì em có thói quen sửa tên sheet thì Tiêu đề của trang cũng nhảy theo. Ví dụ khi em gõ lệnh =Sheet() vào ô A1. Thì tại Cell A1 đó sẽ trả về giá trị của tên Sheet. Trong bản của em có 2 module không cần quan tâm là module tấy tên sheet làm tên tiêu đề, và module Unhide tất cả các sheet.

Bác không cần quan tâm đến Module đó đâu ạ. các Anh chị, các bác nào có thể giải quyết giúp em cái uniform ấy ạ. Em thử hết cách nhưng khi nhấn nút Print, hiện ra bảng tùy chọn, sau đó nhấn lệnh Print thì máy vẫn ko thực hiện lệnh in ạ.

Em bị bế tắc, vì em quá gà nên đi coppy của bác sealand, nên bây giờ không biết bị làm sao luôn...

Thì code trong file của bạn có chỗ nào liên quan đến Print đâu mà kêu nó print chứ. Nói chung code nó vậy thì nó mần vậy
 
Dạ vâng, cái đó không sao cả bác ạ, em có thể đặt lại là "Tensheet" cũng được, mặc dù sao nó chạy vẫn ổn, không báo lỗi bác ạ...hjhj
Tìm Sub PrintID rồi thay thế:
Mã:
Sub PrintID(ByVal ID As Variant, n As Integer)
    Dim shPrint As Worksheet
    Set shPrint = ActiveSheet
    shPrint.Range("I1").Value = ID
    shPrint.Calculate
    shPrint.PrintOut , , n
    Set shPrint = Nothing
End Sub
 
Đã xem file của bạn, có vẻ bạn đang muốn in một sheet với các dữ liệu khác nhau. Bạn có thể xem video sau, chỉ việc add code, không phải lập trình gì nữa.
[video=youtube;EJe90QMl7x0]https://www.youtube.com/watch?v=EJe90QMl7x0[/video]
 
Thì code trong file của bạn có chỗ nào liên quan đến Print đâu mà kêu nó print chứ. Nói chung code nó vậy thì nó mần vậy

Dạ thưa bác, không biết bác có nhã ý giúp em hay là chê bai em nữa ạ, hjx. Em copy cái code, rồi chế cháo lại, nó dài hơn trang giấy A4, để chạy lệnh in cho cho cái UserForm mà sao bác bảo không có cái nào liên qua đến lệnh in, vậy thì em cũng đến chịu ạ, bác xem cái code Userform giúp em, chứ bác xem mấy cái Module làm chi ạ, mấy cái module nó làm gì có cái nào là liên quan đến in là đúng rồi. hjxxx.
 
Tìm Sub PrintID rồi thay thế:
Mã:
Sub PrintID(ByVal ID As Variant, n As Integer)
    Dim shPrint As Worksheet
    Set shPrint = ActiveSheet
    shPrint.Range("I1").Value = ID
    shPrint.Calculate
    shPrint.PrintOut , , n
    Set shPrint = Nothing
End Sub

Cám ơn bác Befaint . Em đã in được rồi, và tìm ra lỗi của mình, chắc do em tham lam muốn thêm 1 cái messbox thông báo khi nhấn lệnh in nên máy đã không hiểu, bây giờ em xóa lệnh hiện messbox và đơn giản như của bác thì em đã in được, Cám ơn bác nhiều nhé. Đúng là tham lam quá cũng không tốt...hjhj. Cám ơn bác rất nhiều.

Em có gửi kèm file đã chỉnh sửa... chạy trơn tru rất tốt ạ.
 

File đính kèm

chắc do em tham lam muốn thêm 1 cái messbox thông báo khi nhấn lệnh in nên máy đã không hiểu, bây giờ em xóa lệnh hiện messbox và đơn giản như của bác thì em đã in được,.

Em có gửi kèm file đã chỉnh sửa... chạy trơn tru rất tốt ạ.

.PrintPreview không có thuộc tính số bản in (Copies) nên bị lỗi.

Msgbox không lỗi.
 
.PrintPreview không có thuộc tính số bản in (Copies) nên bị lỗi.

Msgbox không lỗi.

Bác ạ. em không hiểu sao khi đổi thành Printout và để msgbox thì vẫn không nhận lệnh in ra máy in, em đã thử để lại msgbox và dùng lần lượt các lệnh PrintPreview và Printout, thì Msgbox vẫn chạy nhưng lệnh in ko chuyển ra máy in được. em bị bế tắc ở lúc đó.nhưng ko sao, bjo bỏ đc lệnh msgbox cũng tiện, đỡ rườm rà. rất cám ơn bác.
 
em cám ơn chị nhiều ạ, Video rất hữu ích
 
Đã xem file của bạn, có vẻ bạn đang muốn in một sheet với các dữ liệu khác nhau. Bạn có thể xem video sau, chỉ việc add code, không phải lập trình gì nữa.
[video=youtube;EJe90QMl7x0]https://www.youtube.com/watch?v=EJe90QMl7x0[/video]

em cám ơn chị nhiều ạ, Video rất hữu ích
 
Tìm Sub PrintID rồi thay thế:
Mã:
Sub PrintID(ByVal ID As Variant, n As Integer)
    Dim shPrint As Worksheet
    Set shPrint = ActiveSheet
    shPrint.Range("I1").Value = ID
    shPrint.Calculate
    shPrint.PrintOut , , n
    Set shPrint = Nothing
End Sub
nếu không muốn file đươc in bằng tay (Ctrl+P hay file\print) thì phải viết code như thế nào ạ?
 
Web KT

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

Back
Top Bottom