Para responder a esta pregunta usaremos como referencia el manual Aprendiendo OOo Basic
Comentario a las paginas 71 y 72 del manual Aprendiendo OOo Basic
Subrutina:
- Usa para iniciar la palabra clave Sub y de cierre End Sub
- Una subrutina se puede pasar por valor o por referencia.
- Por valor significa que no puedes manipular el valor dentro de la subrutina y otra caracteristica es que usan la palabra clave BYVAL. (pasarle una “copia” del valor de la variable, por lo cual, el valor de este argumento solo se puede usar “dentro” de la subrutina que la usa)
- Por referencia significa que si puedes manipular el valor dentro de la subrutina. (cuando los argumentos se pasan por referencia, lo que estamos haciendo es pasarle la “ubicación” de la variable en la memoria, por lo cual, podemos modificar su valor “dentro” de la subrutina)
- Una subRutina: Es usada para hacer tareas repetitivas no matematicas.
Function:
- Usa para iniciar la palabra clave Function y de cierre End Function
- Es usada para hacer calculos repetivos, por ejemplo si en diversas partes de una macro necesitas hacer varias veces algun calculo matematico lo mejor es usar una funcion.