zoukankan      html  css  js  c++  java
  • 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

    最后需要的话,可以将宏加入到工具栏。

  • 相关阅读:
    Web框架之Django_01初识(三大主流web框架、Django安装、Django项目创建方式及其相关配置、Django基础三件套:HttpResponse、render、redirect)
    前端Web框架的实现过程
    HTML、CSS 和 JS框架之Bootstrap
    前端之JQuery
    前端基础之JavaScript_2
    进程池、线程池、回调函数、协程
    前端基础之JavaScript_1
    前端基础之CSS_2
    前端基础之CSS_1
    前端基础之HTML
  • 原文地址:https://www.cnblogs.com/liuzhengdao/p/2101953.html
Copyright © 2011-2022 走看看