Another question comes to mind:

To make sure my app doesn't crash, I have some checkups here and there on the "UBound(matMyMatrix, 1)" to avoid going further.

Should I save the UBound result in a variable and use this for the checkup instead? Or will UBound offer me an as blazing-fast result?