2016-10-10 33 views
4

在Excel中,让我们有B2到B7和C2到C7中的数据。在VBA我可以写一个宏来选择它:Excel VBA代码来选择非空单元

Sub Macro1() 
Range("B2:C7").Select 
End Sub 

如何重写代码,使其自动选择那些非空的细胞? 如果我删除单元格B7和C7中的数据,那么我希望宏只选择范围(B2:C6) 如果我将数据添加到单元格B8和C8,那么我希望宏选择范围(B2:C8)。

我的数据总是会启动一个B2,C2,并且数据之间不会有任何空闲空间。如果你想扩大被测试的区域

Sub qwerty() 
    Dim rng As Range, r As Range, rSel As Range 

    Set rng = Range("B2:C7") 
    Set rSel = Nothing 

    For Each r In rng 
     If r.Value <> "" Then 
      If rSel Is Nothing Then 
       Set rSel = r 
      Else 
       Set rSel = Union(rSel, r) 
      End If 
     End If 
    Next r 
    If Not rSel Is Nothing Then rSel.Select 
End Sub 

,用途:

+0

可能的复制问题/ 821364 /选择非空白单元格在excel-with-vba –

+0

@ k.dkhk如果从“范围(B2:C7)”中将单元格“B4”和“C4”清除,如此你需要选择'Range(B2:C3)',或者你仍然需要选择'Range(B2:C7)'? – Vasily

回答

5

您的数据总是从B2,C2,有没有空白单元格其间?如果是这样,你可以设置一个变量是“最后填充行”

lastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row 
Range("B2:C" & lastRow).Select 

,并定义范围从B2到C“最后一排” http://stackoverflow.com/的

+0

“...定义范围从B2到C”最后一行“”。 究竟如何,?我不确定你的意思是什么 –

+0

检查编辑版本 –

+1

完美的作品,谢谢 –

2

使用循环

Range("B2:C7").CurrentRegion 
+0

完美地工作,谢谢 –

相关问题