首页 文章

VBA:在选择的范围中查找第一个空单元格

提问于
浏览
0

因此,我对VBA脚本的有限知识再次陷入困境 .

我有这个脚本:

Sub new_Group()
Dim rnTarget As Range
Set rnTarget = Blad2.Cells(Range("A9:A44").Cells.Count, 1).End(xlUp)
If rnTarget <> "" Then Set rnTarget = rnTarget.Offset(1)
Blad1.Range("A7:F15").Copy
Blad2.Range(rnTarget.Address).PasteSpecial Paste:=xlPasteValues
Blad2.Range(rnTarget.Address).PasteSpecial Paste:=xlPasteFormats
Blad2.Range("P8").Value = Blad2.Range("P8").Value + 10

End Sub

它找到A9到A44范围内的第一个空单元格,并在其位置复制预先设定数量的单元格 .

我现在的问题是,如果在A9:A44中没有单元格为空,是否可以让它开始寻找另一个范围?我希望它首先检查从A9到A44的空单元格,如果没有找到,则开始查看范围H9到H44,依此类推 .

我试过了:

Set rnTarget = Blad2.Cells(Range("A9:A44, H9:H44").Cells.Count, 1).End(xlUp)

但后来它只是继续走下A栏 . 我是否必须以某种方式制作另一个?

1 回答

  • 0
    Sub new_Group()
        If (new_asd("A") = True) Then
            new_asd ("H")
        End If
    End Sub
    
    Function new_asd(new_col As String) As Boolean
        Dim rnTarget As Range
    
        new_asd = False
    
        If Blad2.Range(new_col & "44") = "" Then
            Set rnTarget = Blad2.Cells(Range(new_col & "9:" & new_col & "44").Cells.Count, Range(new_col & 1).Column).End(xlUp)
            If rnTarget <> "" Then
                Set rnTarget = rnTarget.Offset(1)
                Blad1.Range("A7:F15").Copy
                Blad2.Range(rnTarget.Address).PasteSpecial Paste:=xlPasteValues
                Blad2.Range("P8").Value = Blad2.Range("P8").Value + 10
            Else
                new_asd = True
            End If
        Else
            new_asd = True
        End If
    End Function
    

相关问题