Contenido
La instrucción `Private` en Visual Basic for Applications (VBA) se utiliza para declarar variables o procedimientos (Subs y Functions) que solo serán accesibles desde el módulo en el que se declaran. Esto significa que no pueden ser llamados o accedidos desde otros módulos o proyectos. Usar `Private` es una buena práctica para encapsular y proteger tu código, permitiendo un mayor control sobre dónde y cómo se usa tu código.
Aquí hay algunos ejemplos de cómo usar la instrucción `Private`:
Para Variables:
Private miVariable As Integer
Sub MiSubrutina()
miVariable = 10
' código que usa miVariable
End Sub
En este caso, `miVariable` es una variable que solo está disponible dentro de este módulo. No se puede acceder a ella desde otros módulos o procedimientos.
Para Procedimientos (Subs y Functions):
Private Sub MiSubPrivada()
' Código aquí
End Sub
Private Function MiFuncionPrivada() As Integer
MiFuncionPrivada = 5
End Function
Con `Private` delante de `Sub` o `Function`, estos procedimientos no podrán ser llamados desde fuera del módulo en el que están definidos.
Ejemplo de cómo usar una función privada dentro de otra pública:
Private Function AreaCuadrado(lado As Double) As Double
AreaCuadrado = lado * lado
End Function
Public Sub MostrarArea()
Dim lado As Double
lado = 5
MsgBox "El área del cuadrado es: " & AreaCuadrado(lado)
End Sub
En este ejemplo, `AreaCuadrado` es una función privada que calcula el área de un cuadrado y solo puede ser usada dentro de este módulo. `MostrarArea` es una subrutina pública que puede ser llamada desde cualquier parte del proyecto y utiliza la función privada para mostrar el área de un cuadrado.
Recuerda que el alcance de `Private` está limitado al módulo donde es definido, así que si intentas llamar o acceder a una variable o procedimiento privado desde fuera de ese módulo, recibirás un error en tiempo de compilación que indica que el elemento no es accesible debido a su nivel de protección.
Además, ten en cuenta que `Private` puede usarse tanto en módulos estándar como en los módulos de clase, pero su significado es ligeramente diferente en módulos de clase porque también se refiere al acceso de métodos y propiedades desde instancias de esa clase.