zoukankan      html  css  js  c++  java
  • Excel打印控制

    "打印的时候像Word一样自动分栏,可以用添加辅助表和使用INDIRECT()的办法实现:

    假如你的原表是Sheet1,新建一个工作表Sheet2,把表头设置成需要的分栏形式(注意表头行数要和原表一致,保证第一行数据和原表的行号相同,只是多了几个列),现在架设你的数据从第2行开始,并且每页打印5行数据(不含表头),每页打印3栏。请在Sheet2的A2单元格(第一行数据)输入如下公式即可返回Sheet1工作表A2的数据,:
    =INDIRECT(""sheet1!A""&ROW()+ROUNDDOWN((ROW()-2)/5,0)*10)
    在Sheet2的B2单元格中输入如下公式可返回Sheet1中B1的数据
    =INDIRECT(""sheet1!B""&ROW()+ROUNDDOWN((ROW()-2)/5,0)*10)

    说明:Indirect()函数返回指定单元格内容。参数“Sheet1”指要引用的工作表的名字,“A”“B”表示要引用的列号,“-2”表示第一行数据所在行号,“5”在这里表示每页的打印数据行数(不含表头),
    “10”表示下页第一个数比本页第一列最后一个行数的相差数,在这里每页打印5行,每页打印3列,所以这个数就等于3*5-5=10。

    好了,A1、B1单元格(其实就是第一栏的数据)好了,现在弄第二栏的数据,即C、D列数据。在C1单元格输入:
    =INDIRECT(""sheet1!A""&ROW()+ROUNDDOWN((ROW()-2)/5,0)*10+5)
    和A1相比,只是在后面加了个5,因为这是第二栏,比第一栏多了5个数。
    在D1中输入:=INDIRECT(""sheet1!B""&ROW()+ROUNDDOWN((ROW()-2)/5,0)*10+5)
    和B1相比,也只是加了个5,和C1相比,只是取了第B列数据。

    同理,很容易写出E1和F1的公式:
    =INDIRECT(""sheet1!A""&ROW()+ROUNDDOWN((ROW()-2)/5,0)*10+10)
    =INDIRECT(""sheet1!B""&ROW()+ROUNDDOWN((ROW()-2)/5,0)*10+10)

    最后一步,请选中A1到F1单元格,用填充柄向下复制即可。" 

    另外,两个宏:

    Sub PrintDoubleSided()
        Dim Totalpages As Long
        Dim pg As Long
        Dim oddoreven As Integer
        On Error GoTo enditt
        Totalpages = ExecuteExcel4Macro("Get.Document(50)")
        oddoreven = InputBox("Enter 1 for Odd, 2 for Even")
        For pg = oddoreven To Totalpages Step 2
            ActiveWindow.SelectedSheets.PrintOut From:=pg, To:=pg
        Next pg
    enditt:
    End Sub

    Sub 手动双面打印()
        Dim suiping As Integer
        Dim cuizi As Integer
        Dim zys As Integer
        Dim myBottonNum As Integer
        Dim myPrompt As String
        myPrompt = "请将出纸器中已打印好一面的纸取出并将其放回到送纸器中,然后按下""确定"",继续打印"
        'ActiveSheet.UsedRange.Cells(ActiveSheet.UsedRange.Cells.Count).Select
        'suiping = ActiveSheet.HPageBreaks.Count        '统计当前工作表水平分页符
        'cuizi = ActiveSheet.VPageBreaks.Count          '统计当前工作表垂直分页符
        'zys = (suiping + 1) * (cuizi + 1)              '统计总页数
        zys = ExecuteExcel4Macro("Get.Document(50)")    '发现上面统计的总页数不正确,改用此处
        MsgBox "总页数为" & zys                         '显示总页数
        For i = 1 To zys Step 2                         '打印奇数页
            ActiveSheet.PrintOut From:=i, To:=i
        Next i
        myBottonNum = MsgBox(myPrompt, vbYesNo)         '提示取出纸张,继续打印
        If myBottonNum = vbYes Then
            For j = 2 To zys Step 2                     '打印偶数页
                ActiveSheet.PrintOut From:=j, To:=j
            Next j
        End If
    End Sub

  • 相关阅读:
    Java 正则表达式
    Java 设计模式系列(二三)访问者模式(Vistor)
    Java 设计模式系列(十五)观察者模式(Observer)
    Java 设计模式系列(十八)备忘录模式(Memento)
    Java 设计模式系列(二十)状态模式
    Java 设计模式系列(十五)迭代器模式(Iterator)
    Java 设计模式系列(十三)模板方法
    Java 设计模式系列(十二)策略模式(Strategy)
    Java 设计模式系列(二二)责任链模式
    Java 设计模式系列(十四)命令模式(Command)
  • 原文地址:https://www.cnblogs.com/apollokk/p/6713942.html
Copyright © 2011-2022 走看看