VBA sur Excel Bug ou (R)évolution

Je m’explique il y a une différence au niveau de l’utilisation des variables et de leur portée entre VBA 2003 et VBA 2007

avec le tableau ci-dessous ce sera plus clair

2003

2007

Correction 2007

function test(mavariable as string)

mavariable = left(mavariable,2)

test=mavariable

end function

sub test()

varorigine=”bonjour”

resultat = test(varorigine)

end sub

fonction identique à 2003 function test(mavariable as string)

tmpvariable = mavariable

tmpvariable = left(tmpvariable,2)

test=tmpvariable

end function

sub test()

varorigine=”bonjour”

resultat = test(varorigine)

end sub

Résultat après exécution Résultat après exécution Résultat après exécution
varorigine = “bonjour”

resultat = “bo”

varorigine = “bo”

resultat = “bo”

varorigine = “bonjour”

resultat =”bo”

En fait dans la version non corrigée la redéfinition de la variabla agit comme un pointeur et va modifier la variable en dehors de la fonction.

Vus : 276
Publié par pc-kc : 32