如何实现点击Excel Page2工单编号一键复制行数据到Page3
完善后的VBA代码实现
以下是补充完成的Page2工作表模块代码,实现点击C列工单编号时自动填充对应数据到Page3:
Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim sh As Worksheet, sh2 As Worksheet Dim targetRow As Long Set sh = ThisWorkbook.Sheets("Page2") Set sh2 = ThisWorkbook.Sheets("Page3") If Target.CountLarge = 1 Then If Not Intersect(Target, sh.Range("C:C")) Is Nothing Then targetRow = Target.Row ' 填充日期、时间、工单编号至Page3的E3:E5 ' 若Page2中日期/时间的列位置不同,修改A/B为对应列字母 sh2.Range("E3").Value = sh.Range("A" & targetRow).Value sh2.Range("E4").Value = sh.Range("B" & targetRow).Value sh2.Range("E5").Value = sh.Range("C" & targetRow).Value ' 填充分数至Page3的J3 ' 若Page2中分数列不是D列,修改D为对应列字母 sh2.Range("J3").Value = sh.Range("D" & targetRow).Value ' 复制E:BC列的Yes/No/NA答案至Page3的E7起始区域 sh.Range("E" & targetRow & ":BC" & targetRow).Copy Destination:=sh2.Range("E7") End If End If End Sub
关键修正与说明
- 修正变量声明:原代码中
sh未明确声明为Worksheet类型,现在统一指定类型避免潜在错误。 - 改用
CountLarge:替代Count防止选中大量单元格时出现溢出报错。 - 灵活适配列位置:代码中假设日期在A列、时间在B列、分数在D列,若你的表格列布局不同,直接修改对应列标识即可。
- 批量复制答案:通过
Copy方法一次性复制整行的E到BC列数据,确保答案与Page2的列顺序完全对应。 - 可选表头排除:如果需要避免点击C列表头时触发填充,可在
targetRow = Target.Row后添加判断:If targetRow > 1 Then,将内部填充逻辑包裹进去。
内容的提问来源于stack exchange,提问作者Shiela
相关产品推荐
相关产品推荐

