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

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

  • 相关阅读:
    Android 锁屏 临时屏蔽
    单编译framework相关模块
    02
    pad 强制加载 Hdpi资源 (2.3 dpi < 240)
    设置form的默认按钮
    How to Be a Good Graduate Student
    我怕你们急于求成
    希腊字母读音表
    数据库札记(二)
    Ubuntu 9.04下jdk的安装与配置
  • 原文地址:https://www.cnblogs.com/liuzhengdao/p/2101953.html
Copyright © 2011-2022 走看看