Saltar al contenido

¿Es posible declarar una variable pública en vba y asignar un valor predeterminado?

Solución:

.NET nos ha echado a perder 🙂 Su declaración no es válida para VBA.

Solo se puede dar un valor a las constantes al cargar la aplicación. Los declaras así:

Public Const APOSTROPHE_KEYCODE = 222

Aquí hay una declaración de muestra de uno de mis proyectos vba:

Imagen constante de VBA

Si está buscando algo en el que declare una variable pública y luego desee inicializar su valor, debe crear un sub Workbook_Open y realizar su inicialización allí. Ejemplo:

Private Sub Workbook_Open()
  Dim iAnswer As Integer

  InitializeListSheetDataColumns_S
  HideAllMonths_S

  If sheetSetupInfo.Range("D6").Value = "Enter Facility Name" Then
    iAnswer = MsgBox("It appears you have not yet set up this workbook.  Would you like to do so now?", vbYesNo)
    If iAnswer = vbYes Then
      sheetSetupInfo.Activate
      sheetSetupInfo.Range("D6").Select
      Exit Sub
    End If
  End If

  Application.Calculation = xlCalculationAutomatic
  sheetGeneralInfo.Activate
  Load frmInfoSheet
  frmInfoSheet.Show


End Sub

Asegúrese de declarar el sub en el objeto del libro de trabajo:
ingrese la descripción de la imagen aquí

Solo para ofrecerte un ángulo diferente.

Creo que no es una buena idea mantener variables públicas entre llamadas a funciones. Cualquier variable que necesite utilizar debe almacenarse en Subs and Functions y pasarse como parámetros. Una vez que el código termina de ejecutarse, no debe esperar que el proyecto VBA mantenga los valores de las variables.

La razón de esto es que hay una gran cantidad de cosas que pueden restablecer inadvertidamente el proyecto VBA mientras se usa el libro de trabajo. Cuando esto sucede, las variables públicas se restablecen a 0.

Si necesita que se almacene un valor fuera de sus subs y funciones, le recomiendo usar una hoja de trabajo oculta con rangos con nombre para cualquier información que deba persistir.

Seguro que lo sabes, pero si es una constante entonces const MyVariable as Integer = 123 de lo contrario, no tendrás suerte; a la variable se le debe asignar un valor inicial en otro lugar.

Tú podrías:

public property get myIntegerThing() as integer
    myIntegerThing= 123
end property

En un módulo de clase, créelo globalmente;

public cMyStuff as new MyStuffClass

Entonces cMyStuff.myIntegerThing está disponible de inmediato.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *