Search code examples
excelvbarangeoffset

Test if range exists in VBA


I have a dynamically defined named range in my excel ss that grabs data out of a table based on a start date and an end date like this

=OFFSET(Time!$A$1,IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),1,MATCH(Date_Range_End,AllDates)-IFERROR(MATCH(Date_Range_Start,AllDates,0)-1,MATCH(Date_Range_Start,AllDates)),4)

But if the date range has no data in the table, the range doesn't exists (or something, idk). How can I write code in VBA to test if this range exists or not?

I have tried something like

If Not Range("DateRangeData") Is Nothing Then

but I get "Runtime error 1004, method 'Range' of object '_Global' failed."


Solution

  • You can replicate the match in your VBA to count before using the range how many rows you would have, or you can use error handling:

    On Error Resume Next
    
    Debug.Print range("DateRangeData").Rows.Count
    
    If Err = 1004 Then
        MsgBox "Range Empty"
        Exit Sub
    Else
        MsgBox "Range full"
    End If
    
    Err.Clear
    On Error GoTo 0