VBA宏粘贴值至表格末行遇torange变量为空报错求助
VBA宏粘贴值问题修复方案
问题核心错误点:
torange已经是Range对象,最后一行用Range(torange)调用PasteSpecial属于冗余错误写法,直接用对象本身即可。- 未给
Range指定工作表前缀(如wst.),会默认指向当前活动工作表,若和VisRange所在工作表不一致,会导致torange指向错误区域,出现空值提示。 MsgBox(torange)无法正确显示Range对象地址,需用MsgBox(torange.Address)查看范围信息。
修正后的完整代码:
Set VisRange = Application.Intersect(VisRange, wsf.Columns("D:R")) If MsfT_LastRow = 2 Then Set torange = wst.Range("A2") MsgBox torange.Address ' 正确显示目标范围地址 Else Set torange = wst.Range("A" & MsfT_LastRow + 1) MsgBox torange.Address End If ' 直接使用torange对象执行粘贴值操作 VisRange.Copy torange.PasteSpecial xlPasteValues Application.CutCopyMode = False ' 清理剪贴板,避免残留复制状态
- 补充说明:
- 所有Range操作都加上明确的工作表前缀,确保操作目标是指定工作表,避免因活动表切换产生异常。
- 若不需要调试查看地址,可直接删除MsgBox相关代码,提升宏运行效率。
内容的提问来源于stack exchange,提问作者craig crowhurst
相关产品推荐
相关产品推荐

