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 for Applications 窗口。

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。

感謝您的幫助
網站主持人對此評論進行了最小化
你好,卡吉,
要解決您的問題,請應用以下代碼:
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保護