If the table is bounded by blank column R and blank row below (and no completely blank rows or columns within the table) you might get away with:
ActiveSheet.Range("A1").currentregion.Remov~~~
or variant:
Intersect(ActiveSheet.Range("A:Q"),ActiveSheet.Range("A1").currentregion).R emov~~~
If the table is a proper Excel Table (listobject in vba) then:
Range("Table1").Remov~~~

Come back if none of these work.

Your .range("$A:$Q") should work but is in danger of removing stuff below the table too.