如何在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
相关产品推荐
相关产品推荐

