Note: The other languages of the website are Google-translated. Back to English

 每次打印后如何自动增加单元格值?

假设我有一个需要打印100份的工作表页面,单元格A1是支票号码Company-001,现在,我希望每次打印后该数字将增加1。 这意味着当我打印第二份副本时,编号将自动增加到Company-002,第三份副本,编号将成为Company-003…一百份,编号将成为Company-100。 是否有任何技巧可以快速且可能地在Excel中解决此问题?

每次打印后使用VBA代码自动增加单元格值


箭头蓝色右气泡 每次打印后使用VBA代码自动增加单元格值

通常,没有直接的方法可以让您在Excel中解决此任务,但是在这里,我将创建一个VBA代码来处理它。

1。 按住 ALT + F11 键打开 Microsoft Visual Basic应用程序 窗口。

2。 点击 插页 > 模块,然后将以下代码粘贴到 模块 窗口。

VBA代码:每次打印后自动递增单元格值:

Sub IncrementPrint()
'updateby Extendoffice
    Dim xCount As Variant
    Dim xScreen As Boolean
    Dim I As Long
    On Error Resume Next
LInput:
    xCount = Application.InputBox("Please enter the number of copies you want to print:", "Kutools for Excel")
    If TypeName(xCount) = "Boolean" Then Exit Sub
    If (xCount = "") Or (Not IsNumeric(xCount)) Or (xCount < 1) Then
        MsgBox "error entered, please enter again", vbInformation, "Kutools for Excel"
        GoTo LInput
    Else
        xScreen = Application.ScreenUpdating
        Application.ScreenUpdating = False
        For I = 1 To xCount
            ActiveSheet.Range("A1").Value = " Company-00" & I
            ActiveSheet.PrintOut
        Next
        ActiveSheet.Range("A1").ClearContents
        Application.ScreenUpdating = xScreen
    End If
End Sub

3。 然后按 F5 键以运行此代码,并弹出一个提示框,提示您输入要打印当前工作表的份数,请参见屏幕截图:

打印1时doc增量

4。 点击 OK 按钮,现在您的当前工​​作表正在打印,同时,您需要的单元格A001中已打印的工作表分别编号为Company-002,Company-003,Company-1…。

备注:在上面的代码中,单元格 A1 将插入您订购的序列号,并插入原始单元格值 A1 将被清除。 还有“公司-00”为序列号,您可以根据需要进行更改。


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (51)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
这段代码太棒了,这正是我需要的,但是,我想知道是否有办法从单元格“A1”中输入的数字开始打印? 例如,如果我打印了 100 份,在下一次打印时,我需要从 101 号开始打印并从那里开始计数。 我已经尝试了一些代码调整,但它似乎只取单元格中输入的数字,即 101,加 1,然后其余的打印件都停留在那个数字上,即 102...您的帮助将不胜感激: -)
该评论由网站上的主持人最小化
如果您还没有找到解决方案,您可以将代码的第 17 行编辑为: ActiveSheet.Range("A1").Value = Range("A1").Value + 1
这将使您在 A1 单元格中的数字 +1。
该评论由网站上的主持人最小化
它没有发送到我的打印机
该评论由网站上的主持人最小化
你好,

en executant la macro ça efface le nombre de ma cellule。
Je voudrais par example avoir A1= 153,je lance une impression de 10 份。 J'ai dis feuilles imprimée de 154 à 164 ET je voudrais que le nombre de la cellule soit aussi 164。
Comme ça quand je relance une impression ça prend le chiffre dans A1。
J'aimerais aussi si possible na pas à avoir aller dans basic。 je voudrais que la macro s'active directionment via l'option impression。 这可能吗?
该评论由网站上的主持人最小化
你好,

en executant la macro ça efface le nobre en A1。

je voudrais si c'est possible par example A1=153 et faire une impression de 10 份。 donc je recupéré 10 impressions numérotées de 154 à 164 ET je voudrais aussi que le 153 en A1 s'incrémente jusqu'à 164.

Je voudrais aussi si possible ne pas à avoir utiliser basic pour l'impression。 je voudrais pouvoir declancher direction la macro en utilisant l'option impression tout simplement。

MERCI倒VOTRE助手
该评论由网站上的主持人最小化
你好,卡吉,
要解决您的问题,请应用以下代码:
Sub IncrementPrint_Num()
Dim xCount As Variant
Dim xScreen As Boolean
Dim I As Long
Dim xInt As Integer
On Error Resume Next
xInt = 153 'number
LInput:
xCount = Application.InputBox("Please enter the number of copies you want to print:", "Kutools for Excel")
If TypeName(xCount) = "Boolean" Then Exit Sub
If (xCount = "") Or (Not IsNumeric(xCount)) Or (xCount < 1) Then
MsgBox "error entered, please enter again", vbInformation, "Kutools for Excel"
GoTo LInput
Else
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
For I = 1 To xCount
xInt = xInt + 1
ActiveSheet.Range("A1").Value = xInt
ActiveSheet.PrintOut
Next
Application.ScreenUpdating = xScreen
End If
End Sub

试试看,希望对你有帮助,如果有其他问题,请在这里评论。
该评论由网站上的主持人最小化
查找附件修改后的代码。

这是文本:
子增量打印()
'更新 Extendoffice
将 xEnd 调暗为变体
将 xStart 调暗为变体
将 xScreen 调暗为布尔值
暗淡我只要
出错时继续下一步
输入:
xStart = Application.InputBox("请输入第一个数字:", "Kutools for Excel")
xEnd = Application.InputBox("请输入最后一个数字:", "Kutools for Excel")
If TypeName(xCount) = "Boolean" Then Exit Sub
If (xStart = "") Or (Not IsNumeric(xStart)) Or (xStart < 1) Then
MsgBox "输入错误,请重新输入", vbInformation, "Kutools for Excel"
转到 LInput
其他
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
对于 I = xStart 到 xEnd
ActiveSheet.Range("A1").Value = "Company-00" & I
ActiveSheet.PrintOut
下一页
ActiveSheet.Range("A1").ClearContents
Application.ScreenUpdating = xScreen
结束如果
END SUB
查看附件 (1 / 5)
该评论由网站上的主持人最小化
我需要像 IA1-055242、IA1-055243、IA1-055244 这样的序列号......
该评论由网站上的主持人最小化
感谢您发布此信息,它非常有帮助。 我的问题是:我有 2 个不同的条形码需要在一页上递增,我该如何修改代码来做到这一点?
该评论由网站上的主持人最小化
很抱歉在单独的帖子中问这个问题...我的序列号以零开头,但是当我运行程序时它会消除零。 我试图将数字字段转换为文本,但这并没有解决它。 其他想法?
该评论由网站上的主持人最小化
R-单击单元格,格式,自定义,其中显示“常规”,将其替换为与您的序列号一样多的零。 这将强制在您的序列号前面所需的零数量。 如果我有一组 10 位序列号的序列号,我在类型字段中输入 0000000000 以在序列号字段中显示“0004563571”。
该评论由网站上的主持人最小化
谢谢艺术。 我确实尝试过,但条形码不断消除前导零......即使在做了自定义数字格式之后。
该评论由网站上的主持人最小化
我的序列号以 227861 开头,如何打印
该评论由网站上的主持人最小化
打印了 30 份,但现在我无法打印,运行脚本很多次但没有工作,什么都不做 :(
该评论由网站上的主持人最小化
谢谢楼上的,真的很有帮助。 是否可以保存并记住最后一个值
该评论由网站上的主持人最小化
你好,彼得,
要在下次打印时保存并记住上次打印的值,您应该应用以下 VBA 代码:

子增量打印()
将 xCount 变暗为变体
将 xScreen 调暗为布尔值
暗淡我只要
暗淡 xM 只要
将 xMNWS 调暗为工作表
将 xAWS 调暗为工作表
出错时继续下一步
输入:
xCount = Application.InputBox("请输入您要打印的份数:", "Kutools for Excel")
If TypeName(xCount) = "Boolean" Then Exit Sub
如果 (xCount = "") 或 (Not IsNumeric(xCount)) 或 (xCount < 1) 那么
MsgBox "输入错误,请重新输入", vbInformation, "Kutools for Excel"
转到 LInput
其他
xScreen = Application.ScreenUpdating
设置 xAWS = ActiveSheet
出错时转到 EMarkNumberSheet
设置 xMNWS = Sheets("IncrementPrint_MarkNumberSheet")
EMarkNumberSheet:
如果 xMNWS 什么都不是,那么
设置 xMNWS = Application.Worksheets.Add(Type:=xlWorksheet)
xMNWS.Name = "IncrementPrint_MarkNumberSheet"
xMNWS.Range("A1").Value = 0
xM = 0
xMNWS.Visible = xlSheetVeryHidden
其他
xM = xMNWS.Range("A1").Value
结束如果
Application.ScreenUpdating = False
对于 I = 1 到 xCount
xM = xM + 1
xAWS.Range("A1").Value = "Company-00" & xM
xAWS.PrintOut
下一页
xMNWS.Range("A1").Value = xM
xAWS.Range("A1").ClearContents
Application.ScreenUpdating = xScreen
结束如果
END SUB

如果需要将打印的数字重置为默认数字,请先运行下面的代码,然后再执行上面的代码进行打印。

子增量打印_重新安装()
将 xMNWS 调暗为工作表
出错时转到 EMarkNumberSheet
设置 xMNWS = Sheets("IncrementPrint_MarkNumberSheet")
EMarkNumberSheet:
如果不是 xMNWS 什么都不是,那么
Application.DisplayAlerts = False
xMNWS.Visible = xlSheetHidden
xMNWS.删除
Application.DisplayAlerts = True
结束如果
END SUB
该评论由网站上的主持人最小化
嗨,谢谢您提供此代码。我有一个问题。 我使用了这个代码,但这个系列像 0071,0072,0073 一样跳跃。 在 3-1 系列之间发生了 100 次。 所以我关闭了vba而不保存重新安装代码,但它打印了最后一个保存的系列(0032)。 我的问题是如何在不跳系列的情况下连续打印以及如何从 101 开始重新打印? 非常感谢您的回答。 非常遗憾。 我不是程序员,希望你能理解。 谢谢! 
该评论由网站上的主持人最小化
感谢您发布此信息,这非常有帮助。 我的问题是:我有 2 个不同的条形码需要在一页上递增,我该如何修改代码来做到这一点?
该评论由网站上的主持人最小化
你好戴斯蒙德,
如果您在一页上有 2 个位置(例如 2 张优惠券或 2 张模板/2 张优惠券等),那么您可以尝试使用以下代码。 (假设您的第一个条形码和第二个条形码位于同一页的单元格“A1”和“A2”中,此代码将增加第一页上的 Company-1 和 Company-20 以及第二页上的 Company-001 和 Company-002 等值您可以在代码的第 003、004、20、21 和 23 行中根据需要编辑单元格编号和公司名称。 
它还会要求您输入起始编号和结束编号(感谢天才的这部分代码)。 例如,您的起始编号。 是 1 并且结尾没有。 8,它将在第 4 页打印 1,2 页 1,在第 3,4 页打印 2,在第 5,6 页打印 3,最后在第 7,8 页打印 4。 希望它可以帮助您或任何正在寻找此类需求/要求的人。 
修改代码:------------------------------------------------------------ ------------子增量打印()
'更新 Extendoffice
将 xEnd 调暗为变体
将 xStart 调暗为变体
将 xScreen 调暗为布尔值
暗淡我只要
出错时继续下一步
输入:
xStart = Application.InputBox("请输入第一个数字:", "Kutools for Excel")
xEnd = Application.InputBox("请输入最后一个数字:", "Kutools for Excel")
If TypeName(xCount) = "Boolean" Then Exit Sub
If (xStart = "") Or (Not IsNumeric(xStart)) Or (xStart < 1) Then
MsgBox "输入错误,请重新输入", vbInformation, "Kutools for Excel"
转到 LInput
其他
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
对于 I = xStart 到 xEnd
如果我 Mod 2 = 0 那么
ActiveSheet.Range("A1").Value = "Company-00" & I + 1
ActiveSheet.Range("A20").Value = "Company-00" & I
其他
ActiveSheet.Range("A20").Value = "Company-00" & I + 1
ActiveSheet.Range("A1").Value = "Company-00" & I
ActiveSheet.PrintOut
结束如果
下一页
ActiveSheet.Range("A1").ClearContents
ActiveSheet.Range("A20").ClearContents
Application.ScreenUpdating = xScreen
结束如果
END SUB

-------------------------------------------------- -------------------------------------------------- -----谢谢,RNS
该评论由网站上的主持人最小化
我的单元格是 I3,当我尝试时,数字是 2298(VBA 代码:每次打印后自动递增单元格值:)它给了我 22981 我如何将它变为 2298,2299,2300
该评论由网站上的主持人最小化
嗨,詹妮弗,
要解决您的问题,请应用以下 VBA 代码:
注意:请将前缀文本和数字更改为您自己的。

子增量Print_Num()
将 xCount 变暗为变体
将 xScreen 调暗为布尔值
暗淡我只要
将 xStr 调暗为字符串
将 xInt 调暗为整数
出错时继续下一步
xStr = "公司-" '前缀文本
xInt = 2291 '数字
输入:
xCount = Application.InputBox("请输入您要打印的份数:", "Kutools for Excel")
If TypeName(xCount) = "Boolean" Then Exit Sub
如果 (xCount = "") 或 (Not IsNumeric(xCount)) 或 (xCount < 1) 那么
MsgBox "输入错误,请重新输入", vbInformation, "Kutools for Excel"
转到 LInput
其他
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
对于 I = 1 到 xCount
xInt = xInt + 1
ActiveSheet.Range("A1").Value = xStr & xInt
ActiveSheet.PrintOut
下一页
ActiveSheet.Range("A1").ClearContents
Application.ScreenUpdating = xScreen
结束如果
END SUB

请尝试一下,希望对您有所帮助!
该评论由网站上的主持人最小化
你好,你能帮我解决这个问题吗? 我希望 xINT 超过 5 位。 每次我输入一个 6 位数字时,计数都会回到 1。我该如何防止这种情况发生?
该评论由网站上的主持人最小化
嗨,非常有趣,即使我正在寻找一个我找不到的不同解决方案,即使我尝试自定义代码也无法实现。按照你的例子,我需要打印相同的页面 100 次,例如,在同一个 PDF 中,每页页码递增。正如我所说,尝试了整理方法,但据我了解,如果您需要相同打印输出的多个副本,它允许您一起打印。提前感谢 Giuseppe
该评论由网站上的主持人最小化
嗨,这段代码运行良好,但是在 32767 单元格值之后它又回到 1。在这个值之后,它从数字 1 打印。
该评论由网站上的主持人最小化
非常感谢,它对我有用。 我设法进行了一些小改动以满足我的需要。 真的很感谢你的分享。
该评论由网站上的主持人最小化
嗨詹妮弗,试试这个
子增量打印()
'更新 Extendoffice 20160530
将 xCount 变暗为变体
将 xScreen 调暗为布尔值
暗淡我只要
出错时继续下一步
输入:
xCount = Application.InputBox("请输入您要打印的份数:", "Kutools for Excel")
If TypeName(xCount) = "Boolean" Then Exit Sub
如果 (xCount = "") 或 (Not IsNumeric(xCount)) 或 (xCount < 1) 那么
MsgBox "输入错误,请重新输入", vbInformation, "Kutools for Excel"
转到 LInput
其他
xScreen = Application.ScreenUpdating
Application.ScreenUpdating = False
对于 I = 1 到 xCount

ActiveSheet.PrintOut
ActiveSheet.Range("J18").Value = ActiveSheet.Range("J18").Value + 1
下一页
'ActiveSheet.Range("J18").ClearContents'

Application.ScreenUpdating = xScreen
结束如果
END SUB
该评论由网站上的主持人最小化
太感谢了。
该评论由网站上的主持人最小化
适用于打印增量#。 如何在需要时每 5、10 次打印一次?
该评论由网站上的主持人最小化
有没有办法选择我要打印的值? 例如,我打印了序列 1 到 30,但需要再次重新打印序列 15 到 19。
该评论由网站上的主持人最小化
嘿,我想在打印后将 K11 单元数的数量更改为 1-2-3-4-5-6 等,请您帮忙吗? 并告诉我如何调用该函数请帮助
该评论由网站上的主持人最小化
我想知道如何进行小改动,以便打印 1 of 10、2 of 10、3 of 10 等。
否则这很好用。 谢谢。
该评论由网站上的主持人最小化
嗨,我的名字是suresh,我有一个excel 格式的数据,没有任何序列号,例如方式账单。 我需要将其打印为 100 页,并且需要从 4 位打印我需要的序列号,但在打印时我必须以手动方式进行。 你能解释一下打印时自动生成序列号代码的人吗
该评论由网站上的主持人最小化
伟大的 !! 我不是程序员,但我设法更改了 Cell ref 和我想要的 uniq 编号。 为我工作出色上帝保佑你!
该评论由网站上的主持人最小化
是否也可以添加到此代码,以便自动打印 2 份?
该评论由网站上的主持人最小化
我认为您可以更改这部分:ActiveSheet.Range("A1").Value = "Company-00" & I
ActiveSheet.PrintOut


ActiveSheet.Range("A1").Value = "Company-00" & I
ActiveSheet.PrintOut
ActiveSheet.PrintOut

各获得 2 份。
该评论由网站上的主持人最小化
我想知道您是否可以在重新打开后直接打印出文件并且它仍然遵循序号?
我目前正在做的是每次打开文件时, ALT + F11 然后 F5 并指示副本数。 然后它将使用正确的编号打印文件,然后再次保存。 当我再次重新打开时,我只需要做同样的步骤。
如果有一个代码,您每次打开文件时都可以直接打印出来,它仍然会按照顺序编号?
在此先感谢
该评论由网站上的主持人最小化
我想知道您是否可以在重新打开后直接打印出文件并且它仍然遵循序号?

我目前正在做的是每次打开文件时, ALT + F11 然后 F5 并指示副本数。 然后它将使用正确的编号打印文件,然后再次保存。 当我再次重新打开时,我只需要做同样的步骤。

如果有一个代码,您每次打开文件时都可以直接打印出来,它仍然会按照顺序编号?

在此先感谢
该评论由网站上的主持人最小化
非常感谢您分享以上代码。 这对每个人都非常有帮助。 我们可以在打印后添加一些代码来增加 8 个数字而不是 1 个吗?等待您的回复。 谢谢
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护