You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C13按Enter时自动运行宏并逐行粘贴到指定工作表

解决Excel宏的两个核心问题

1. 在C13单元格按下Enter时自动触发宏

要实现这个触发逻辑,需要用到工作表的Worksheet_Change事件,操作步骤如下:

  • 右键点击当前工作表的标签(比如"Sheet1"),选择「查看代码」
  • 在弹出的VBA编辑器中,粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
    ' 判断是否修改了C13单元格且内容不为空
    If Target.Address = "$C$13" And Target.Value <> "" Then
        CopyToAWBRecord ' 调用复制粘贴的宏
    End If
End Sub

2. 自动将C13内容追加到「AWB Scan Record」的下一行

替换你当前的宏代码为以下版本,它会自动找到A列最后一个非空单元格的下一行,实现依次从A3、A4往下粘贴的需求:

Sub CopyToAWBRecord()
    Dim sourceValue As Variant
    Dim targetSheet As Worksheet
    Dim lastRow As Long
    
    ' 获取C13的内容
    sourceValue = ThisWorkbook.ActiveSheet.Range("C13").Value
    
    ' 定位目标工作表
    Set targetSheet = ThisWorkbook.Sheets("AWB Scan Record")
    
    ' 找到A列最后一行的下一行
    lastRow = targetSheet.Range("A" & targetSheet.Rows.Count).End(xlUp).Row
    ' 如果A3及以上都是空的,默认从A3开始
    If lastRow < 3 Then lastRow = 2
    
    ' 直接写入值(比复制粘贴更高效)
    targetSheet.Range("A" & lastRow + 1).Value = sourceValue
    
    ' 清空C13方便下次输入
    ThisWorkbook.ActiveSheet.Range("C13").ClearContents
End Sub

核心优化点

  • 移除了Select/Selection操作,避免VBA因工作表切换产生的错误
  • 自动定位下一个空行,不会覆盖原有数据
  • 用直接赋值替代复制粘贴,提升运行效率
  • 增加清空C13的逻辑,适合连续录入场景

内容的提问来源于stack exchange,提问作者Faiz Ahmad Khan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 18:42:10