In Excel, let's I have data in B2 to B7 and C2 to C7 . In VBA I can write a macro to select it:
Sub Macro1()
Range("B2:C7").Select
End Sub
How do I rewrite the code so that it chooses automatically the cells that are non-empty? If I delete the data in cell B7 and C7 then I want the macro to select only Range(B2:C6) And if I add data to Cell B8 and C8 then I want the macro to choose Range(B2:C8).
My data will always start a B2,C2 and I will not have any free space between data.
your data always start at B2,C2 and has no empty cell inbetween? If so you can set a variable to be the "last filled in row"
lastRow = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
Range("B2:C" & lastRow).Select
and define the range from B2 to the C"last row"
Use a loop:
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
If you want to expand the area being tested, use:
Range("B2:C7").CurrentRegion
Use the 'SpecialCells' function of Selection object
Sub Macro1()
Range("B2:C7").Select
For Each self in Selection.SpecialCells(xlCellTypeConstants)
Debug.Print(self)
Next
End Sub
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With