Si ejecutas la macro y por ejemplo almacenas un 5 en la variable cal, y termina la macro, entonces el valor de la variable es nulo, cada que termina la macro la memoria se resetea y se pierden todas las variables.
Lo que debes hacer es, antes de terminar la macro, almacenar el valor de cal en alguna celda, luego entonces cuando inicie la macro tomar el valor de la celda y sumarle el nuevo valor a cal, por ejemplo:
Sub Acumulador()
'Por.Dante Amor
cal = Sheets("Hoja1").[Z1]
'
'proceso
'
cal = cal + 10
'fin de tu macro
'
'poner el nuevo valor en la hoja
Sheets("Hoja1").[Z1] = cal
'
End Sub
Adapta el ejemplo a tu macro.
Si no es lo que necesitas, tendrás que explicar con detalle y con ejemplos qué es lo que necesitas.
Saludos. Dante Amor
Recuerda valorar la respuesta.