Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 974|回复: 5

[已解决]连续打印时,1-11就出错,请高手帮我指点一下

[复制链接]
发表于 2022-5-3 11:30 | 显示全部楼层 |阅读模式
Sub CommandButton1_Click()
a1 = InputBox("请输入打印起始行数:", "输入工作表起始行数")
a2 = InputBox("请输入打印结束行数:", "输入工作表结束行数")
If a2 < a1 Then
    MsgBox ("批量打印结束行号小于起始行号,请重新输入!")

Else
          For i = a1 To a2              '这个就是循环
          Sheets("单据").Range("b4") = Sheets("明细").Cells(i, 1) '1
          Sheets("单据").Range("b5") = Sheets("明细").Cells(i, 2) '1
          Sheets("单据").Range("b6") = Sheets("明细").Cells(i, 3) '1
          Sheets("单据").Range("b7") = Sheets("明细").Cells(i, 4) '1
          Sheets("单据").Range("j4") = Sheets("明细").Cells(i, 5) '2
          Sheets("单据").Range("j5") = Sheets("明细").Cells(i, 6) '2
          Sheets("单据").Range("j6") = Sheets("明细").Cells(i, 7) '2
          Sheets("单据").Range("j7") = Sheets("明细").Cells(i, 8) '2
          Sheets("单据").Range("b14") = Sheets("明细").Cells(i, 9) '3
          Sheets("单据").Range("b15") = Sheets("明细").Cells(i, 10) '3
          Sheets("单据").Range("b16") = Sheets("明细").Cells(i, 11) '3
          Sheets("单据").Range("b17") = Sheets("明细").Cells(i, 12) '3
          Sheets("单据").Range("j14") = Sheets("明细").Cells(i, 13) '4
          Sheets("单据").Range("j15") = Sheets("明细").Cells(i, 14) '4
          Sheets("单据").Range("j16") = Sheets("明细").Cells(i, 15) '4
          Sheets("单据").Range("j17") = Sheets("明细").Cells(i, 16) '4
            Sheets("单据").PrintOut Copies:=1
    Next
End If
End Sub


最佳答案
2022-5-7 15:10
=============================================

a1 = InputBox("请输入打印起始行数:", "输入工作表起始行数")
a2 = InputBox("请输入打印结束行数:", "输入工作表结束行数")
If a2 < a1 Then
    MsgBox ("批量打印结束行号小于起始行号,请重新输入!")
=============================================
InputBox 的结果 是文本,

a1 , a2 变量 未定义类型,

a1 , a2 = InputBox() 以后 , a1 , a2也是文本类型

文本 大小与长度 无关,
从左向右 , 逐字比较 , 当出现不同 , 比对结束
故 "2" 与 "19" 比较时

"2" > "1" 比较就完成了 , 结果就是 "2" > "19"

----------------------------------
方法1:
      在程序一开始 时:
      Dim a1 as Long , a2 as Long    ' 定义a1 , a2 为 长整形数字 (范围 约为 -21亿~21亿 )
方法2:
      a1 =CLng( InputBox("请输入打印起始行数:", "输入工作表起始行数"))    '将 InputBox 的输入结果转换为 长整形数字
      ......




excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-5-3 13:27 | 显示全部楼层
感觉 连续打印 系统需要 时间响应,


Application.Wait 方法    暂停 Microsoft Excel 的所有操作,并且,Wait 起作用时可能禁止您对计算机做其他操作。不过,后台操作(如打印和重新计算)将继续进行。
Application.Wait(Now + TimeValue("0:00:10"))

Dim t As Single
t = Timer '记下开始的时间
While Timer < t + 5 '循环等待
DoEvents '转让控制权,以便让操作系统处理其它的事件
Wend
跨天时, Timer清零,
要精确 需要加上天的判断. 麻烦
回复

使用道具 举报

发表于 2022-5-3 13:28 | 显示全部楼层
感觉 连续打印 系统需要 时间响应,


Application.Wait 方法    暂停 Microsoft Excel 的所有操作,并且,Wait 起作用时可能禁止您对计算机做其他操作。不过,后台操作(如打印和重新计算)将继续进行。
Application.Wait(Now + TimeValue("0:00:10"))

Dim t As Single
t = Timer '记下开始的时间
While Timer < t + 5 '循环等待
DoEvents '转让控制权,以便让操作系统处理其它的事件
Wend
跨天时, Timer清零,
要精确 需要加上天的判断. 麻烦
回复

使用道具 举报

 楼主| 发表于 2022-5-3 22:42 | 显示全部楼层
砂海 发表于 2022-5-3 13:27
感觉 连续打印 系统需要 时间响应,

谢谢
回复

使用道具 举报

 楼主| 发表于 2022-5-5 05:49 | 显示全部楼层
砂海 发表于 2022-5-3 13:28
感觉 连续打印 系统需要 时间响应,

没有太懂你的意思,我现在在打印核酸检测卡,如果打印1-199就没有问题,如果打印1-200,就出现“批量打印结束行号小于起始行号,请重新输入”,请问  If a2 < a1 Then
    MsgBox ("批量打印结束行号小于起始行号,请重新输入!")

Else
          For i = a1 To a2         是不是设计的不准确   


回复

使用道具 举报

发表于 2022-5-7 15:10 | 显示全部楼层    本楼为最佳答案   
=============================================

a1 = InputBox("请输入打印起始行数:", "输入工作表起始行数")
a2 = InputBox("请输入打印结束行数:", "输入工作表结束行数")
If a2 < a1 Then
    MsgBox ("批量打印结束行号小于起始行号,请重新输入!")
=============================================
InputBox 的结果 是文本,

a1 , a2 变量 未定义类型,

a1 , a2 = InputBox() 以后 , a1 , a2也是文本类型

文本 大小与长度 无关,
从左向右 , 逐字比较 , 当出现不同 , 比对结束
故 "2" 与 "19" 比较时

"2" > "1" 比较就完成了 , 结果就是 "2" > "19"

----------------------------------
方法1:
      在程序一开始 时:
      Dim a1 as Long , a2 as Long    ' 定义a1 , a2 为 长整形数字 (范围 约为 -21亿~21亿 )
方法2:
      a1 =CLng( InputBox("请输入打印起始行数:", "输入工作表起始行数"))    '将 InputBox 的输入结果转换为 长整形数字
      ......




回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 11:54 , Processed in 0.458502 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表