J'apprends VBA en utilisant une combinaison de VBA For Dummies et le livre mentionné ci-dessus. Le dernier, présente un défi simple (Défi 2, chapitre 2) auquel j'aimerais vous poser quelques remarques.
Le défi est le suivant:
Placez un contrôle de button de command sur une feuille de calcul et écrivez un programme dans la procédure d'événement Click () qui augmente une variable par 5 à chaque clic de la souris. Sortez la valeur de cette variable dans une boîte de message.
J'ai rassemblé l'extrait de code suivant en réponse:
Sub CommandButton1_Click() Dim AddClick As Integer AddClick = Range("A1").Value AddClick = AddClick + 5 Range("A1").Value = AddClick MsgBox AddClick End Sub
Bien que le code fonctionne, je suis bien sûr qu'il existe un moyen d'éliminer l'utilisation de 'Range ("A1"). Valeur' pour baser la variable 'AddClick' sur. Comment pourrais-je faire cela?
* Mise à jour: Grâce à la suggestion de Cody Gray (http://articles.techrepublic.com.com/5100-10878_11-5854605.html), j'ai révisé le code à la suite – qui fonctionne maintenant très bien (édité pour plus d'informations sur la simplicité ): *
Sub CommandButton1_Click() Static AddClick As Integer AddClick = AddClick + 5 MsgBox AddClick End Sub
Simples. Merci encore Cody.
Les deux échantillons précédents sont faux je pense. La version correcte est la suivante:
Sub CommandButton1_Click() Static AddClick As Integer AddClick = AddClick + 5 MsgBox AddClick End Sub
Définissez la variable au niveau du module.
Cela augmentera la scope de la variable de la procédure au module.
Remplacez le code existant par celui-ci.
Option Explicit Dim AddClick As Integer Sub CommandButton1_Click() AddClick = 0 AddClick = AddClick + 5 MsgBox (AddClick) End Sub
Remarque: La définition de la variable au niveau de la procédure limitera sa durée de vie.
c'est-à-dire que la variable ne sera pas accessible en dehors du cadre de la procédure.