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 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题