Excel如何實現表單編號自動遞增?


Excel經常被用作業務單據的制作,例如出庫單,一個很現實的需求是表單自動編號,希望每次打印時編號會自動遞增。
很幸運Excel能夠支持自動編號的實現,網上的方法很多,但自己找了半天也沒能成功實現。不過網上還是找到了些許靈感。
首先,要知道Excel提供了一個Workbook_BeforePrint事件,這個事件可以在打印或打印預覽之前被執行,由於打印預覽不是真正的打印,所以如果在 Workbook_BeforePrint這個事件中遞增編號顯然不對。怎么辦呢?Excel有沒有Workbook_AfterPrint事件呢?很遺憾沒有。
要是能區分打印預覽和打印就好了,然而區分幾乎是不可能的,所以,我覺得將系統自帶的打印和打印預覽功能失效掉。
失效很簡單,只要設置Cancel=true就可以了。
Private Sub Workbook_BeforePrint(Cancel As Boolean) Cancel = True End Sub
好,我已經將系統打印功能失效了,那么我就要自己編寫打印的代碼。不知道怎么寫代碼?沒有關系,可以錄制宏。
執行打印的命令是:ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"
實現自動遞增, Range("B1").Select ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + 1

這里,我定義一個全局變量isPrint,在宏中設置,要打印時就設置成isPrint=true,這樣我就可以事件中判斷是否需要打印。

完整代碼

Public isPrint As Boolean Sub Macro1()     isPrint = True     ExecuteExcel4Macro "PRINT(1,,,1,,,,,,,,2,,,TRUE,,FALSE)"     Range("B1").Select     ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + 1 End Sub
Private Sub Workbook_BeforePrint(Cancel As Boolean)     Cancel = True     If isPrint = False Then Exit Sub     Cancel = False     isPrint = False End Sub


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM