基于指定工作表复制数据区域的VBA宏问题求助
VBA宏代码错误修正方案
原代码的问题点
- 引用工作表时错误地把变量
ShtName用引号包裹,导致VBA试图寻找名为"ShtName"的工作表,而非用户输入的目标表名 Copy方法的Destination参数写法错误,不需要额外调用.Paste,直接指定目标单元格范围即可
修正后的代码
Public Sub MacroPremiumCopy() Dim ShtName As String Dim targetSht As Worksheet ShtName = InputBox("请输入要复制数据的工作表名称") If ShtName <> "" Then ' 检查输入的工作表是否存在 On Error Resume Next Set targetSht = ThisWorkbook.Worksheets(ShtName) On Error GoTo 0 If Not targetSht Is Nothing Then ' 复制指定区域到汇总表的M14开始的位置 targetSht.Range("X7:X98").Copy Destination:=ActiveSheet.Range("M14") Else MsgBox "不存在名为""" & ShtName & """的工作表,请检查输入" End If End If End Sub
代码说明
- 移除工作表名的引号,直接使用变量
ShtName引用目标工作表,匹配用户输入内容 - 新增工作表存在性检查,避免输入错误导致程序崩溃,同时给出明确的错误提示
- 修正
Copy方法的参数写法,直接指定目标单元格范围ActiveSheet.Range("M14"),这里的ActiveSheet就是放置按钮的汇总表
内容的提问来源于stack exchange,提问作者George Kustos
相关产品推荐
相关产品推荐

