Sub 单编码批量打印() Dim mysheet As Worksheet Dim wlbm As String Dim pch$ Dim dbsl, shzs, pxh, i, j, k, m, n As Integer Set mysheet = ActiveSheet wlbm = mysheet.Cells(3, 1) dbsl = mysheet.Cells(5, 2) shzs = mysheet.Cells(8, 2) pch = mysheet.Cells(6, 2) If (wlbm = "") Or (dbsl = "") Or (shzs = "") Or (pch = "") Then MsgBox "请检查,单包数量、物料编码、送货总数、批次号是否填写完整" Exit Sub Else If dbsl > shzs Then MsgBox "单包数量不能大于送货总数!" Exit Sub Else If dbsl = shzs Then mysheet.Cells(5, 4) = "1-1" mysheet.PrintOut Else i = Application.WorksheetFunction.RoundUp(shzs / dbsl, 0) j = shzs - (i - 1) * dbsl For k = 1 To i - 1 mysheet.Cells(5, 4) = i & "-" & k mysheet.PrintOut Next k mysheet.Cells(5, 2) = j mysheet.Cells(5, 4) = i & "-" & i mysheet.PrintOut End If End If End If mysheet.Cells(5, 4) = "" mysheet.Cells(3, 1) = "" mysheet.Cells(8, 2) = "" mysheet.Cells(6, 2) = "" mysheet.Cells(5, 2) = "" End Sub
时间: 2024-03-31 13:36:25 浏览: 11
这是一段VBA代码,用于在Excel中进行打印操作。代码中包括以下变量:
- mysheet:代表当前活动的工作表
- wlbm:代表物料编码
- pch:代表批次号
- dbsl:代表单包数量
- shzs:代表送货总数
该代码的主要功能是将指定的数据按照设定的单包数量进行分包,并打印每个包的标签。具体实现步骤如下:
1. 从工作表中获取物料编码、批次号、单包数量和送货总数等数据。
2. 判断这些数据是否填写完整,如果有缺失则提示用户并退出。
3. 如果单包数量大于送货总数,则提示用户并退出。
4. 如果单包数量等于送货总数,则只需要打印一张标签。
5. 如果单包数量小于送货总数,则需要将送货总数按照单包数量进行分包,并打印每个包的标签。
6. 打印完成后清空相关数据,以便下次使用。
需要注意的是,该代码中存在一些潜在的问题,如未对输入数据进行有效性验证,没有处理异常情况等。使用时需要根据实际情况进行修改和完善。
相关问题
写一个EXCEL宏,将当前sheet另存到桌面为一个新的工作表,并将新工作表所有单元格里带公式的内容变为文本内容,文件用当前sheet名字命名
好的,以下是该宏的代码:
```VBA
Sub SaveAsText()
Dim mySheet As Worksheet
Dim newSheet As Workbook
Dim savePath As String
Dim saveName As String
' 获取当前工作表和保存路径及文件名
Set mySheet = ActiveSheet
savePath = Environ("USERPROFILE") & "\Desktop\"
saveName = mySheet.Name & ".xlsx"
' 将所有公式转为文本
mySheet.Cells.Copy
mySheet.Cells.PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, True
' 另存为新工作表
Set newSheet = Workbooks.Add
mySheet.Cells.Copy newSheet.Sheets(1).Cells
newSheet.SaveAs Filename:=savePath & saveName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
newSheet.Close
' 恢复原工作表
Application.CutCopyMode = False
End Sub
```
使用方法:
1. 打开需要操作的工作表
2. 按下 `Alt + F11` 进入 VBA 编辑器
3. 将上述代码复制粘贴进 VBA 窗口中
4. 按下 `F5` 运行宏
5. 等待宏执行完成后,在桌面上会生成一个新的工作表文件,文件名为当前工作表的名字,其中所有公式已经转为文本。原工作表不受影响。
写一个EXCEL宏,将当前sheet另存到桌面为一个新的工作表,并将新工作表所有单元格里带公式的内容转变为非公式的格式,文件用当前sheet名字命名
好的,以下是该宏的代码:
```VBA
Sub SaveAsValues()
Dim mySheet As Worksheet
Dim newSheet As Workbook
Dim savePath As String
Dim saveName As String
' 获取当前工作表和保存路径及文件名
Set mySheet = ActiveSheet
savePath = Environ("USERPROFILE") & "\Desktop\"
saveName = mySheet.Name & ".xlsx"
' 将所有公式转为非公式
mySheet.Cells.Copy
mySheet.Cells.PasteSpecial xlPasteValues
' 另存为新工作表
Set newSheet = Workbooks.Add
mySheet.Cells.Copy newSheet.Sheets(1).Cells
newSheet.SaveAs Filename:=savePath & saveName, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
newSheet.Close
' 恢复原工作表
Application.CutCopyMode = False
End Sub
```
使用方法:
1. 打开需要操作的工作表
2. 按下 `Alt + F11` 进入 VBA 编辑器
3. 将上述代码复制粘贴进 VBA 窗口中
4. 按下 `F5` 运行宏
5. 等待宏执行完成后,在桌面上会生成一个新的工作表文件,文件名为当前工作表的名字,其中所有带公式的单元格已经转为非公式的格式。原工作表不受影响。
希望这次能够满足您的需求,如有其他问题请随时提出。