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

Excel跨工作表复制指定单元格内容及VBA代码报错求助

解决VBA复制Excel单元格报错问题

报错排查与修复方案

1. 核对工作表名称

确认代码中的Sheet1、Sheet2和Excel文件里的工作表实际名称完全一致(注意大小写、空格、特殊字符,比如实际表名是「工作表1」就会触发下标越界错误)。也可以改用工作表索引避免名称匹配问题,比如Sheets(1)代表第一个工作表,Sheets(2)代表第二个。

2. 替换为非空单元格定向复制代码

原代码是整区域复制,不符合你“只复制有文本的单元格”的需求,同时可能因目标区域冲突报错。改用以下代码精准复制非空单元格:

Sub CopyNonEmptyCells()
    Dim sourceSheet As Worksheet, targetSheet As Worksheet
    Dim sourceRange As Range, cell As Range
    Dim targetRow As Integer
    
    Set sourceSheet = ThisWorkbook.Sheets("Sheet1")
    Set targetSheet = ThisWorkbook.Sheets("Sheet2")
    Set sourceRange = sourceSheet.Range("B2:I95")
    targetRow = 1 '从Sheet2的B1开始写入
    
    For Each cell In sourceRange
        If cell.Value <> "" Then
            targetSheet.Cells(targetRow, cell.Column).Value = cell.Value
            '若需复制格式,替换上一行为:cell.Copy targetSheet.Cells(targetRow, cell.Column)
            targetRow = targetRow + 1
        End If
    Next cell
End Sub

3. 检查工作表保护状态

如果Sheet2处于保护状态,会导致无法写入数据。可以在代码开头添加取消保护的语句(有密码需补充密码):

targetSheet.Unprotect Password:="你的保护密码"

复制完成后再重新保护:

targetSheet.Protect Password:="你的保护密码"

4. 排除文件权限问题

确保Excel文件不是只读模式,关闭后重新打开,保存为可编辑格式再运行代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 19:54:26