Le langage de script de Microsoft Excel, Visual Basic, vous permet de prolonger déjà amplement ensemble d'outils d'Excel . Toutefois , le codage directement dans Visual Basic peut être difficile parce que certaines fonctions ( comme le tri ) nécessitent la mise plusieurs paramètres dans un fashion.You exact peut éviter le codage manuel tout en laissant l'enregistreur de macros écrire le code pour vous, mais ce n'est pas toujours net le résultat que vous recherchez. La solution consiste à combiner le meilleur des deux mondes: utiliser des macros pour faire le codage en vrac et un peu de codage pour finir le travail à la main . Trier un tableau Petit
utiliser Visual Basic pour trier une petite table. Commencez par entrer dans le tableau ci-après dans les cellules du G8 à H11 dans Fiche 1:
nom du client, compte balanceZephyr Machines vent , Bureaux 5Arondale , - 10Bubble Gumballs , 30
Après avoir entré les données , sélectionnez et commencer l'enregistrement de la macro ( développeur> enregistrer une macro ) . Nommez le mysort macro. Trier (Données > Trier de A à Z) les données sélectionnées sur la première colonne , et arrêter l'enregistrement de la macro.
Rejouer la macro
Essayez d'utiliser la macro à recourir une gamme différente : copier et coller la table des clients vers une autre zone de la feuille de calcul, sélectionnez la nouvelle gamme . Rejouer la macro ( développeur> Macros > mysort ) , et notez l'effet : les données n'ont pas été triés. Cherchez le problème dans le code Visual Basic créé par l'enregistrement de votre macro. Début en naviguant dans le code suivant: . Appuyez sur Alt + F8 , sélectionnez votre macro mysort , et cliquez sur le bouton Edit
l'intérieur de la fonction mysort , notez cette déclaration: Photos
ActiveWorkbook.Worksheets ( "Sheet1 »). clé Sort.SortFields.Add : = Range (" G8 " ) ...
une déclaration de quelques lignes après : .
SetRange Range (" C9: D12 " )
ces deux déclarations sont à l'origine du problème , ce sont les raisons pour lesquelles mysort ne parvient pas à régler la gamme sélectionnée : le hard-coded la gamme Visual Basic macro enregistreur de données ( " C9: D12 » et " G8 " ) pour trier . Votre tâche consiste à remplacer les plages codées en dur pour faire le tri macro la sélection actuelle
Utilisez la Sélection propriété
Plus précisément, la touche de paramètre : . = Range ( " G8 " ) indique à Excel pour trier le tableau à la clientèle basé sur la colonne " client " , qui commence à la cellule G8 . Pour remplacer cette colonne "client " original avec celui à l'intérieur du texte sélectionné , regardez à la propriété de sélection de l'objet Application . Cette propriété se réfère à la plage de cellules sélectionnées. Remplacer Légende: = Range (" G8 " ) avec ceci: Légende: = k . Vous définissez k dans un moment
La prochaine gamme codé en dur pour remplacer survient quelques déclarations bas : . . SetRange Range (" G8 : H11 " ) . La méthode . SetRange indique à Excel la gamme complète vous voulez trier. Remplacer SetRange Range (" G8 : H11 " ) . Avec ceci: . ». SetRange r"
La variable r , comme le k (ey) variable que vous venez de taper , viendra de la propriété Selection . Aller au début de la définition de la macro et entrez ces lignes :
Dim R, K comme gamme
Set r = Application.SelectionSet k = r.Columns (1) Photos
la première affectation de groupe définit la plage de cellules nécessaires pour la méthode SetRange - . toute la sélection. La seconde affectation définit la plage nécessaire pour la clé de tri de la première colonne dans la sélection. Vous pouvez trier sur la deuxième colonne en changeant le " 1 " à " 2".
Test de la macro corrigée
La correction de code est complet . Testez-le en revenir à la feuille de calcul , en sélectionnant la table des clients - partout où vous l'avez placé sur la feuille - et courir mysort . Copiez ce tableau à une nouvelle série de cellules , sélectionnez les cellules , et exécuter mysort sur eux à nouveau. Remarquez le tri fonctionne désormais correctement .