送货单保存到sheet2第一列客户,第二列日期,以此类推,我写出来是下标越位错误,

sheet1打印送货单,数据保存到sheet2中(如下图),打印保存完后清空数据(单元格内公式不清空),单号自动加一,用VBA实现,报错是下标越界,求解答
送货单保存到sheet2第一列客户,第二列日期,以此类推,我写出来是下标越位错误,
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 一包辣条九毛九 2023-05-26 15:25关注
您好,根据您的需求,我为您提供以下的 VBA 代码实现:
Option Explicit ' 定义全局变量,用于记录当前的单号 Public currentOrderNumber As Long Private Sub Workbook_Open() ' 在工作簿打开时,初始化单号为1 currentOrderNumber = 1 End Sub Private Sub Worksheet_Change(ByVal Target As Range) ' 监听Sheet1中G2单元格的改变,当其有变化时,更新数据到Sheet2 If Target.Address = "$G$2" Then ' 当G2单元格被修改时,将数据复制到Sheet2中 Dim orderNumber As Long orderNumber = currentOrderNumber ' 获取当前单号 Worksheets("Sheet2").Cells(orderNumber, 1).Value = orderNumber ' 保存单号 Worksheets("Sheet2").Cells(orderNumber, 2).Value = Worksheets("Sheet1").Range("B2").Value ' 保存客户名称 Worksheets("Sheet2").Cells(orderNumber, 3).Value = Worksheets("Sheet1").Range("F2").Value ' 保存送货日期 Worksheets("Sheet2").Cells(orderNumber, 4).Value = Worksheets("Sheet1").Range("G2").Value ' 保存订单号 ' 更新单号为下一个值 currentOrderNumber = currentOrderNumber + 1 ' 清空Sheet1中B2、F2、G2单元格的数据 Worksheets("Sheet1").Range("B2").ClearContents Worksheets("Sheet1").Range("F2").ClearContents ' 注意:这里没有清空G2单元格,因为它是一个公式单元格,需要保留 End If End Sub Private Sub Workbook_BeforePrint(Cancel As Boolean) ' 打印前自动保存数据 Dim lastRow As Long lastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row ' 获取最后一行 Worksheets("Sheet2").Range("A1:D" & lastRow).Copy Destination:=Worksheets("Sheet2").Range("F1") ' 复制数据到Sheet2的F1单元格(方便打印) Worksheets("Sheet2").Range("A2:D" & lastRow).ClearContents ' 清空Sheet2中保存的数据 currentOrderNumber = 1 ' 重置单号为1 End Sub
解决 无用评论 打赏 举报