Variable / objets globaux initialisés par "VB Components"
Bonjour,
Avez-vous déjà remarqué que les variables globales sont systématiquement réinitialisées lorsque l'on modifie les "composants VB" (du moins le code du modules et les contrôles ActiveX dans une certaine mesure) par le biais de VBA ?
Dans le cas d'une variable simple, cela n'est pas très dérangeant, car la variable prend la valeur par défault, mais dans le cas d'un object (donc non initialisé), le programme plante complétement...
Avez-vous vous une solution pour quand même converser les variables / objets globaux après que l'on modifie les "composants VB" ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
Option Explicit
'declaration global variable
Public str As String
'
Sub initialise()
'initialisation global variable
str = "Hello"
'modification of the VB component code module -> this will reinitialise all public variables and objects
With ThisWorkbook.VBProject.VBComponents(ThisWorkbook.CodeName)
With .CodeModule
If .CountOfLines Then .DeleteLines 1, .CountOfLines
.AddFromString "Option Explicit"
End With
End With
End Sub
'test is executed after initialise
Sub test()
Debug.Print str & " world!" 'will only show " world!", because str was initialised by "VB Components"
End Sub |
Bien sûr, l'exemple ci-dessous permet juste d'illustrer le problème... il faut que je puisse conserver mes variables / objets globaux tout en pouvant modifier les "Composants VB".
Merci par avance ! :P