m0_73175883 2023-05-26 11:32 采纳率: 0%
浏览 7

sheet1打印送货单,数据保存到sheet2中(如下图),打印保存完后清空数据(单元格内公式不清空),单号自动加一,用VBA实现,报错是下标越界,求解答

img


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

  • 写回答

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
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月26日

悬赏问题

  • ¥15 从键盘输入不管多少字符或者数组 输出的时候先提示输出再显示结果 输出的时候字符间间隔一个空格符
  • ¥30 频率分析法分析绘制奈奎斯特图、波特图
  • ¥15 弹出来一万个系统找不到指定的文件框框,怎么解决
  • ¥15 ADS生成的微带线为什么是蓝色空心的
  • ¥15 求一下解题思路,完全不懂
  • ¥15 tensorflow
  • ¥15 densenet网络结构中,特征以cat方式复用后是怎么进行误差回传的
  • ¥15 STM32G471芯片spi设置了8位,总是发送16位
  • ¥15 R语言并行计算beta-NTI中tree文件的类型
  • ¥15 如何解读marsbar导出的ROI数据?