Pues por eso,

me supongo que la matriz la llenas sin especificar el tamaño, por ejemplo:
aTable1Values = ob_rs.GetRows()
'aqui la matriz se llena dinámicamente, asi se´hasta donde está llena,
max=UBound(aTable1Values, 2)
Si la llenas de otra forma... pon un contador cuando la estes llenando. El problema no son las respuestas, si no que no sabes aplicarlas.