excel - 如果单元格范围已满,则复制

标签 excel vba

如果范围的任何部分有值,我会尝试复制数据,否则什么也不做。
我认为当我设置变量 consulRng我没有正确执行它,它无法确定它是否已满,它总是制作副本。

Sub BlankLine()
    Dim Rng As Range
    Dim WorkRng As Range
    Dim consulRng As Range
    On Error Resume Next
    Set WorkRng = Range("A:E")
    Set consulRng = Worksheets("Hoja 2").Range("J2:O2")
    xLastRow = WorkRng.Rows.Count
    Application.ScreenUpdating = False
    
    If IsEmpty(consulRng) Then
        GoTo EndSub
    Else:
        For xRowIndex = xLastRow To 1 Step -1
        Set Rng = WorkRng.Range("A" & xRowIndex)
            If Rng.Value = "Esto es una prueba" Then
                Sheets("Hoja 2").Range("H2:O2").Copy
                Rng.Offset(1, 0).Insert Shift:=xlDown
                Rng.Offset(1, 0).Paste
            End If
        Next
            
    End If
    
    Application.CutMode = False
    Application.ScreenUpdating = True
EndSub:
End Sub
更新代码:
Sub BlankLine()
    Dim Rng As Range
    Dim WorkRng As Range
    Dim consulRng As Range
    On Error Resume Next
    Set WorkRng = Range("A:E")
    Set consulRng = Worksheets("Hoja 2").Range("J2:O2")
    xLastRow = WorkRng.Rows.Count
    Application.ScreenUpdating = False
    
    'If Not IsEmpty(consulRng) Then
    'If Application.CountA(consulRng) = 0 Then
    If Not Application.Count(consulRng) = 0 Then 'Contribution: PEH
        For xRowIndex = xLastRow To 1 Step -1
        Set Rng = WorkRng.Range("A" & xRowIndex)
            If Rng.Value = "Esto es una prueba" Then
                Sheets("Hoja 2").Range("H2:O2").Copy
                Rng.Offset(1, 0).Insert Shift:=xlDown
                Rng.Offset(1, 0).Paste
            End If
        Next
            
    End If
    
    Application.CutMode = False
    Application.ScreenUpdating = True
End Sub
霍加1:
Hoja1
霍亚2:
Hoja2
Hoja2数据完成:
Hoja2Datacomplete
Hoja1数据完成:
Hoja1Datanocomplete

最佳答案

代替

If Not IsEmpty(consulRng) Then
只是
If Not Application.CountA(consulRng) = 0 Then

关于excel - 如果单元格范围已满,则复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68753064/

相关文章:

excel - 显示货币的 VBA 文本框

vba - 我可以使用 VBA 函数将可接受值的(动态)列表返回到 Excel 的数据验证中吗?

performance - 在 Excel VBA 中迭代类

excel - 如何在excel中建立父子数据表?

excel - 使用数组并在 vba 中使用以下代码查找多个字符串?

vb.net - 在 VB 中使用 Excel 数据填充 DataGrid 列

vba - 从表中清除过滤器

python - 解析Excel公式

arrays - 如何将变量值舍入到数组中的下一个最低数字?

excel - 为什么在 excel 2013 中大多数时候运行 UserForm 时会出现运行时错误 -2147417848 (80010108)?