VBA Excel ¿Cómo uso una función como parámetro?

Me gustaría escribir una función que desproteja y vuelva a proteger mi Hoja de trabajo cuando se ejecuten. La función que tengo actualmente es la siguiente:

Public Function RunProtect(fun As Function, sheet As Worksheet)
    Dim protected As Boolean: protected = False
    If sheet.ProtectContents = True Then
        protected = True
        sheet.Unprotect
    End If

    'Code to run fun 

    If protected = True Then
        sheet.protect
    End If
End Function

¿Es esto posible o hay una manera más fácil de hacerlo? Tengo que desproteger mis hojas cuando intento editar mis tablas usando vba.

Respuestas a la pregunta(1)

Su respuesta a la pregunta