如何用Excel VBA复制CC列非空的表格行到剪贴板?
解决按CC列非空条件复制行的VBA代码问题
问题分析
你的需求是复制CC列存在数据的行到剪贴板,但当前代码存在两个核心问题:
- 错误判断条件:代码检查的是B到I列的求和值,而非CC列是否非空
- 语法与逻辑错误:循环范围写法错误,且逐行复制会覆盖剪贴板内容,最终仅保留最后一行
修正后的代码
Sub CopyNonEmptyCCRows() Application.ScreenUpdating = False Dim srcWS As Worksheet Dim lastRow As Long Dim copyRange As Range Dim currentRow As Long Set srcWS = ThisWorkbook.Sheets("CC2") lastRow = srcWS.Cells(srcWS.Rows.Count, "CC").End(xlUp).Row ' 获取CC列最后一行 ' 遍历行,收集符合条件的行 For currentRow = 3 To lastRow ' 从第3行开始,对应原代码的起始行 If Not IsEmpty(srcWS.Cells(currentRow, "CC").Value) Then If copyRange Is Nothing Then Set copyRange = srcWS.Range("B" & currentRow & ":I" & currentRow) Else Set copyRange = Union(copyRange, srcWS.Range("B" & currentRow & ":I" & currentRow)) End If End If Next currentRow ' 复制收集到的范围到剪贴板 If Not copyRange Is Nothing Then copyRange.Copy End If Application.ScreenUpdating = True End Sub
代码说明
- 判断条件:直接检查CC列单元格是否非空(
IsEmpty),精准匹配需求 - 高效收集范围:用
Union合并所有符合条件的行,最后一次性复制,避免剪贴板覆盖问题 - 语法修正:正确获取CC列最后一行,循环范围写法规范
- 兼容性:使用
ThisWorkbook确保引用当前工作簿的工作表,避免跨工作簿错误
内容的提问来源于stack exchange,提问作者Cooper
相关产品推荐
相关产品推荐

