Excel 单元格循环叠加并循环打印,请高手,谢谢。

2024-12-24 22:34:14
推荐回答(1个)
回答1:

根据你的问题补充,重新写了答案!(以待打印的数据在sheet1中,每打印一次变更的单元格在A2为例)

1、先建两个命令按钮,在工作表中依次点:视图→工具栏→在“控件工具箱”前打√→在弹出的控件工具箱上点命令按钮的图标(鼠标停在小图标上面会有显示)→在工作表上画一个“命令按钮”(选择你想要放按钮的地方,点住左键不松,拖动鼠标,再松开左键,按钮就画好了,注意最好不要画到打印区域内)→在按钮上点右键→命令按钮 对象→编辑→将按钮的名称更改为“开始打印”;按同样的方法再做一个按钮,将名称更改为“停止打印”。

2、alt+f11打开VBA编辑器,双击工程窗口sheet1,在弹出的代码编辑区粘贴如下代码:

Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Dim temp As Boolean

Private Sub CommandButton1_Click()
temp = True
j = InputBox("请输入打印份数", , "2")
If j = "" Then
Exit Sub
End If

For i = 1 To j

If temp = True Then

If i <= 33 Then
a = i - 1
a1 = 1
a2 = 0
a3 = 0
a4 = 0
End If
If i > 33 And i <= 1122 Then
a = i - 34
a1 = 1
a2 = 1
a3 = 0
a4 = 0
End If
If i > 1122 And i <= 37059 Then
a = i - 1123
a1 = 1
a2 = 1
a3 = 1
a4 = 0
End If
If i > 37059 Then
a = i - 37060
a1 = 1
a2 = 1
a3 = 1
a4 = 1
End If

s1 = Int(a / 35937)
y1 = a Mod 35937
s2 = Int(y1 / 1089)
y2 = y1 Mod 1089
s3 = Int(y2 / 33)
y3 = y2 Mod 33

If s1 + a4 <= 9 Then
c1 = s1 + a4
End If
If s1 + a4 > 9 And s1 + a4 < 18 Then
c1 = Chr(s1 + a4 + 55)
End If
If s1 + a4 >= 18 And s1 + a4 < 23 Then
c1 = Chr(s1 + a4 + 56)
End If
If s1 + a4 >= 23 Then
c1 = Chr(s1 + a4 + 57)
End If

If s2 + a3 <= 9 Then
c2 = s2 + a3
End If
If s2 + a3 > 9 And s2 + a3 < 18 Then
c2 = Chr(s2 + a3 + 55)
End If
If s2 + a3 >= 18 And s2 + a3 < 23 Then
c2 = Chr(s2 + a3 + 56)
End If
If s2 + a3 >= 23 Then
c2 = Chr(s2 + a3 + 57)
End If

If s3 + a2 <= 9 Then
c3 = s3 + a2
End If
If s3 + a2 > 9 And s3 + a2 < 18 Then
c3 = Chr(s3 + a2 + 55)
End If
If s3 + a2 >= 18 And s3 + a2 < 23 Then
c3 = Chr(s3 + a2 + 56)
End If
If s3 + a2 >= 23 Then
c3 = Chr(s3 + a2 + 57)
End If

If y3 + a1 <= 9 Then
c4 = y3 + a1
End If
If y3 + a1 > 9 And y3 + a1 < 18 Then
c4 = Chr(y3 + a1 + 55)
End If
If y3 + a1 >= 18 And y3 + a1 < 23 Then
c4 = Chr(y3 + a1 + 56)
End If
If y3 + a1 >= 23 Then
c4 = Chr(y3 + a1 + 57)
End If

Cells(2, 1) = "A" & c1 & c2 & c3 & c4

Sheet1.PrintOut

DoEvents
Sleep 500
DoEvents

Else
Exit For
End If

Next i

End Sub

Private Sub CommandButton2_Click()
temp = False
End Sub

保存后关闭VBA编辑器,OK
点开始打印,在弹出窗口中输入打印份数(如:10000),确定后就可以不停的自动循环打印了,A2单元格也随每次打印不断变更,如果想在中途停止,点停止打印按钮就可以了。

PS:
1、电脑做自动循环的话,速度是很快的,它会很快就向打印机输出N多个任务(每打一份算一个任务,因为每份的内容都不同,A2有变更),这样的话,如果打印份数很庞大,估计打印机会卡死去,所以我做了一个延时,默认是每输出一个任务延时0.5秒,如果你的打印机还跟不上的话,你可以修改上述代码中 Sleep后面的数字,单位是毫秒,但是你不能把数字设得太大,太大的话会导致耽误很多时间);
2、晕,一次打印100万份,什么东东要这样打印啊,那打印机能受得了么!