1. Usando una variable a nivel de módulo:
Este es el enfoque más simple para un contador global que persiste durante la sesión de VBA (hasta que se cierre el archivo de Excel).
`` `VBA
Opción explícita
Mostrador privado hasta el largo 'declara la variable de mostrador
Sub incrementCounter ()
contador =contador + 1
Msgbox "Valor de contador:" y contador
Final
Sub resetcounter ()
contador =0
Msgbox "reinicie de contador a 0"
Final
`` `` ``
* `opción explícita`: Esto es crucial para buenas prácticas de codificación. Te obliga a declarar explícitamente todas las variables.
* `contador privado tan largo ': Esto declara una variable llamada `contador` del tipo` long` (un entero largo), que puede contener números más grandes que 'entero'. La palabra clave 'privada` la hace accesible solo dentro del módulo en el que se declara.
* `incrementCounter` y` resetcounter` subrutinas: Estos demuestran cómo incrementar y restablecer el contador.
2. Usando una celda de hoja de trabajo como contador:
Este método almacena el contador en una celda específica en una hoja de trabajo. El contador persiste incluso si Excel está cerrado y reabierto (a menos que el valor de la celda cambie manualmente).
`` `VBA
Sub incrementworksheetCounter ()
Dim WS como hoja de trabajo
Establecer ws =thisworkbook.sheets ("hoja1") 'Cambiar "Hoja1" a su nombre de hoja
ws.range ("a1"). valor =ws.range ("a1"). valor + 1 'Incrementa el contador en la celda A1
Msgbox "Valor de contador:" y ws.range ("a1"). Valor
Final
Sub reinworksheetCounter ()
Dim WS como hoja de trabajo
Establecer ws =thisworkbook.sheets ("hoja1") 'Cambiar "Hoja1" a su nombre de hoja
ws.range ("a1"). valor =0
Msgbox "reinicie de contador a 0"
Final
`` `` ``
* Este enfoque es más persistente que una variable a nivel de módulo, pero se basa en una celda específica y, por lo tanto, está menos limpia desde una perspectiva puramente VBA.
3. Usando un módulo de clase para un contador más encapsulado:
Este es un enfoque más avanzado que proporciona una mejor organización y reutilización. Un módulo de clase crea un objeto personalizado que encapsula los datos y métodos del mostrador.
`` `VBA
'En un módulo de clase (por ejemplo, llamado "Counterclass")
Opción explícita
Contraalvalte privado tanto tiempo
Propiedad pública Get Counter () tanto tiempo
Contador =Controlante
Propiedad final
Sub incremento público ()
Controleador =Controlante + 1
Final
Public sub rein ()
Contravalorado =0
Final
'En un módulo estándar
SubseCounterClass ()
Dim Mycounter como contrarrase
Establecer mycounter =nueva contraseña
mycounter. Incremento
Debug.print "Valor de contador:" y mycounter.counter
mycounter. Incremento
Debug.print "Valor de contador:" y mycounter.counter
mycounter.reset
Debug.print "Valor de contador:" y mycounter.counter
Establecer mycounter =nada 'importante:libera el objeto desde la memoria
Final
`` `` ``
* Ventajas del módulo de clase: Mejor organización de código, reutilización (puede crear múltiples objetos de contador) y ocultar datos (el 'contravalor' es privado).
Elegir el enfoque correcto:
* Variable a nivel de módulo: Más simple para un solo contador temporal dentro de una sola sesión de VBA.
* Celda de hoja de trabajo: Lo mejor para la persistencia en las sesiones de Excel, pero menos elegante desde el punto de vista de la codificación.
* Módulo de clase: Lo mejor para escenarios complejos, contadores múltiples o cuando necesita una mejor organización de código y reutilización. Este es generalmente el enfoque recomendado para cualquier cosa más allá de un contador muy simple.
Recuerde reemplazar `" Hoja1 "` con el nombre real de su hoja de trabajo si está utilizando el método de celda de la hoja de trabajo. Elija el enfoque que mejor se adapte a sus necesidades y al estilo de codificación. Para la mayoría de las aplicaciones más allá de los contadores simples, el uso de un módulo de clase es muy recomendable para una mejor organización y mantenimiento.