2015-06-30 97 views
0

因此,我再次被困在VBA脚本的有限知识中。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的范围内的第一个空单元格和copys在其位置的细胞的数量预制。

我现在的问题是如果有可能让它开始在另一个范围内寻找,如果在A9:A44中没有空单元? 我希望它首先从A9到A44检查空单元格,如果没有找到,则开始查找范围H9到H44,等等。

我曾尝试:

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

但随后就一直走下去的A柱。 我需要以某种方式制作一个Else吗?

+0

小点:'Blad2.Range(rnTarget.Address).PasteSpecial'可以写成'rnTarget.PasteSpecial' –

回答

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 
+0

感谢您的回答。但有一些问题:1,现在复制双打。 2,它不会将A9视为开始,而是将其粘贴到A中最顶端的单元格中。3,在A9:A44填充后,它仍不会复制到H列。 – Trasapa

+0

尝试我的新编辑。 – Gotrekk

相关问题