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

Excel VBA:如何在C、D列最后一行下方粘贴数据?语法错误修复

修正VBA代码实现指定区域粘贴功能

问题分析

原代码中ThisWorkbook.Worksheets("Sheet2").Range("C") & Rows.Count).end(xlup).Row).Filldown存在两处核心问题:

  1. 语法错误:括号嵌套不匹配,且Range("C") & Rows.Count的写法不符合VBA语法规范,正确引用应为Range("C" & Rows.Count)
  2. 方法误用:FillDown是用于向下填充已有单元格内容的方法,无法实现粘贴复制数据的需求,需使用粘贴类方法或直接指定复制目标区域

修正后的完整代码

Sub Upload_file()
    Dim FileToOpen As Variant
    Dim Openbook As Workbook
    Dim targetWs As Worksheet
    Dim targetStartRow As Long
    
    Application.ScreenUpdating = False
    
    FileToOpen = Application.GetOpenFilename
    If FileToOpen <> False Then
        Set Openbook = Application.Workbooks.Open(FileToOpen)
        Set targetWs = ThisWorkbook.Worksheets("Sheet2")
        
        ' 获取Sheet2中C列最后一个非空单元格的下一行行号
        targetStartRow = targetWs.Range("C" & targetWs.Rows.Count).End(xlUp).Row + 1
        
        ' 复制指定区域并粘贴到目标位置
        Openbook.Sheets(3).Range("E2:F152893").Copy _
            Destination:=targetWs.Range("C" & targetStartRow)
        
        Openbook.Close False
    End If
    
    Application.ScreenUpdating = True
End Sub

关键修正点说明

  1. 目标行定位:通过targetWs.Range("C" & targetWs.Rows.Count).End(xlUp).Row + 1精准定位到C列已有数据的下一行,避免覆盖原有数据
  2. 直接指定复制目标:使用Copy Destination:=的写法,比单独复制再粘贴更简洁高效,同时避免剪贴板占用问题
  3. 对象变量化:将目标工作表赋值给targetWs变量,减少重复代码书写,提升代码可读性和维护性

可选优化方案

如果需要仅粘贴值(忽略格式等),可以将复制粘贴部分替换为:

' 仅粘贴值
Openbook.Sheets(3).Range("E2:F152893").Copy
targetWs.Range("C" & targetStartRow).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False ' 清除剪贴板状态

内容的提问来源于stack exchange,提问作者Dave

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 21:26:18