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

时间:2015-06-30 11:28:16

标签: excel vba range

因为我对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 :(得分: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