VBA代码异常:复制非Data工作表E16单元格至Data表C列返回空值
问题修复:复制指定单元格内容到Data工作表C列
你的VBA代码返回空值,核心是两处错误加一个潜在问题,修正方案如下:
错误点说明
- 单元格引用错误:原代码里的
Cells(4, 16)对应工作表的P4单元格(第4行、第16列),但你需要的是E16,应该用Cells(16, 5)(第16行、第5列,E是第5列),或者更直观的Range("E16") - 目标列错误:原代码把内容写入Data工作表的B列,而需求是写入C列,需要把
Range("B1")改成Range("C1") - 变量未初始化:变量
x最好初始化为0,避免之前的残留值导致写入位置偏移错误
修正后的代码
Sub CopyE16ToDataC() Dim ws As Worksheet Dim x As Integer x = 0 ' 初始化变量,确保从C1开始写入(若要从C2开始,设为1) For Each ws In ActiveWorkbook.Worksheets If ws.Name <> "Data" Then x = x + 1 ' 写入Data工作表的C列,依次往下填充 Sheets("Data").Range("C1").Offset(x - 1) = ws.Range("E16").Value ' 也可改用Cells写法:Sheets("Data").Cells(x, 3).Value = ws.Cells(16, 5).Value End If Next ws End Sub
代码逻辑说明
- 遍历工作簿中所有工作表
- 跳过名为「Data」的工作表
- 每找到一个符合条件的工作表,就把它的E16单元格内容,写入Data工作表C列的对应行(x初始为0时从C1开始,初始为1则从C2开始,按需调整)
内容的提问来源于stack exchange,提问作者Fernando Rodríguez
相关产品推荐
相关产品推荐

