visual variable valor una tipos significa que publicas publica privadas declarar datos constante como asignar vba variables default-value public variable-declaration

vba - valor - variables en visual basic



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

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

Solo las constantes pueden recibir un valor en la carga de la aplicación. Usted los declara así:

Public Const APOSTROPHE_KEYCODE = 222

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

Si está buscando algo donde declare una variable pública y luego quiera 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 en sí:

Quiero hacer esto pero no compilará:

Public MyVariable as Integer = 123

¿Cuál es la mejor manera de lograr esto?


Claro que lo sabes, pero si es una constante, entonces const MyVariable as Integer = 123 contrario, no tienes 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.


Como se dijo anteriormente, para declarar variables accesibles globales puede hacerlo fuera de las funciones precedidas con la palabra clave pública.

Y, dado que la afectación NO ESTÁ PERMITIDA fuera de los procedimientos, puede, por ejemplo, crear un sub llamado InitGlobals que inicialice sus variables públicas, luego simplemente llame a esta subrutina al comienzo de sus declaraciones

Aquí hay un ejemplo de esto:

Public Coordinates(3) as Double Public Heat as double Public Weight as double Sub InitGlobals() Coordinates(1)=10.5 Coordinates(2)=22.54 Coordinates(3)=-100.5 Heat=25.5 Weight=70 End Sub Sub MyWorkSGoesHere() Call InitGlobals ''Now you can do your work using your global variables initialized as you wanted them to be. End Sub


Esto es lo que hago cuando necesito constantes globales inicializadas:
1. Agregue un módulo llamado Globals
2. Agregue propiedades como esta en el módulo Globals :

Property Get PSIStartRow() As Integer PSIStartRow = Sheets("FOB Prices").Range("F1").Value End Property Property Get PSIStartCell() As String PSIStartCell = "B" & PSIStartRow End Property


Ha pasado bastante tiempo, pero esto puede satisfacerte:

Public MyVariable as Integer: MyVariable = 123

Es un poco feo, ya que tienes que volver a escribir el nombre de la variable, pero está en una línea.


Ha pasado un tiempo, pero creo que va a ser:

Public MyVariable as Integer MyVariable = 123


Puede definir la variable en Declaraciones generales y luego inicializarla en el primer evento que se active en su entorno.

Alternativamente, podría crearse una clase con las propiedades relevantes e inicializarlas en el método Initialise


Solo para ofrecerte un ángulo diferente -

Encuentro que no es una buena idea mantener variables públicas entre llamadas a funciones. Todas las variables que necesite utilizar deben almacenarse en Subs y funciones y pasarse como parámetros. Una vez que el código se ejecuta, no debe esperar que el Proyecto VBA mantenga los valores de las variables.

La razón de esto es que solo hay una gran cantidad de cosas que pueden reiniciar inadvertidamente el Proyecto VBA mientras se usa el libro de trabajo. Cuando esto sucede, cualquier variable pública se restablece a 0.

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