You need to enable JavaScript to run this app. VBA实现点击Sheet1任意行自动复制该行数据到发票模板对应位置
优惠活动
大模型
产品
解决方案
定价
更多

VBA实现点击Sheet1任意行自动复制该行数据到发票模板对应位置

点击Sheet1任意行自动填充发票模板的VBA实现
  • 完全保留原有发票模板的固定单元格映射关系,通过工作表选中事件替代硬编码的固定行宏,适配500余行账单的按需生成需求。
  • 逻辑上取消原代码反复切换工作表、调用剪贴板的冗余操作,直接动态获取当前点击行的列值赋值给模板对应位置,运行无闪烁、速度更快。

实现步骤

  1. 按Alt+F11打开VBA编辑器,在左侧工程导航栏双击Sheet1对象,打开对应代码编辑窗口。
  2. 将如下代码粘贴到编辑窗口中:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    ' 仅当选中区域落在A:C列范围时触发,避免误操作
    If Intersect(Target, Me.Range("A:C")) Is Nothing Then Exit Sub
    
    Dim currentRow As Long
    currentRow = Target.Row
    
    Application.ScreenUpdating = False
    ' 完全沿用原Macro13的目标单元格映射规则
    With ThisWorkbook.Sheets("Sheet3")
        ' 账单号:当前行A列 → 模板C4单元格
        .Range("C4").Value = Me.Cells(currentRow, "A").Value
        ' 名称:当前行B列 → C4偏移(0,4)即G4单元格
        .Range("C4").Offset(0, 4).Value = Me.Cells(currentRow, "B").Value
        ' 金额:当前行C列 → C4偏移(17,3)即F21单元格
        .Range("C4").Offset(17, 3).Value = Me.Cells(currentRow, "C").Value
    End With
    Application.ScreenUpdating = True
End Sub

效果说明

  • 在Sheet1的账单列表中,点击任意一行的A/B/C列单元格,系统会自动抓取该行三个列的数值,按照原有顺序填充到发票模板的对应位置,无需手动执行宏。
  • 触发范围做了限制:点击A:C列以外的区域不会触发填充,避免误操作打乱模板内容。
  • 三个填充位置和原固定行代码的执行结果完全一致,不会改动已调试好的发票格式。

内容的提问来源于stack exchange,提问作者Malcolm Dias

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 17:36:02