寻求复制第10行最后26个数据单元格的有效VBA代码(尝试代码失败)
VBA代码修复:复制第10行最后26个含数据单元格
我来帮你修复这段VBA代码,先梳理下原代码里的几个问题:
- 变量
lr未定义且无意义(我们只需要复制第10行的单元格,行数固定为1) - 起始列计算逻辑错误:要取最后26个单元格,起始列应该是
lc - 25(从该列到最后一列lc刚好是26列) - 嵌套
With语句的语法有误,复制操作不需要额外嵌套 - 缺少边界判断:如果第10行的有效列数不足26,会导致列号小于1的错误,需要做容错处理
以下是修正后的可运行代码:
Sub GetLastCells() Dim ws As Worksheet Dim lastCol As Long Dim startCol As Long ' 指定目标工作表 Set ws = ThisWorkbook.Worksheets("PROCV") ' 获取第10行最后一个有数据的列号 lastCol = ws.Cells(10, ws.Columns.Count).End(xlToLeft).Column ' 计算起始列:如果有效列数>=26,取倒数第26列;否则取第1列 startCol = IIf(lastCol >= 26, lastCol - 25, 1) ' 复制目标范围:第10行,从startCol到lastCol的单元格 ws.Range(ws.Cells(10, startCol), ws.Cells(10, lastCol)).Copy ' 如果你需要粘贴到某个位置,可以添加类似下面的代码(按需启用) ' ThisWorkbook.Worksheets("目标工作表").Range("A1").PasteSpecial xlPasteValues End Sub
代码关键点说明:
- 明确声明了工作表变量
ws,让代码更清晰易维护 - 添加了
startCol的容错判断,避免当第10行数据不足26列时出现运行错误 - 使用
Range对象直接指定复制范围,比Resize更直观,也避免了行数错误的问题 - 注释清晰标注了每一步的作用,方便你理解和修改
内容的提问来源于stack exchange,提问作者Souza Saulo
相关产品推荐
相关产品推荐

