La propriété VBA UsedRange est une propriété pure ajoutée à la bibliothèque VBA. Couramment trouvé dans les fils de discussion Web pour trouver le nombre de lignes et de colonnes dans une feuille - et compter les itérations d'une boucle for par proxy - ce qui est certainement utile.plage d'utilisation
Il y a quelques autres propriétés intéressantes et quelques mises en garde à garder à l'esprit. Voyons.
- Objet UsedRange
- forme de série
- Utiliser des lignes et des colonnes
- Utilisation de la propriété .Address
- première ligne première colonne
- compter les lignes et les colonnes
- dernière ligne et dernière colonne
- Pour le nombre de boucles
- propriétés et méthodes
- gamme claire
- plage de navigation
- changements cachés
plage d'utilisation
But
plage d'utilisation
est spécialchamps d'applicationDéfinit les propriétés de la plage de cellules utilisée dans la feuille de calcul. En fait, certaines modifications apportées à une cellule la marquent également comme "utilisée" selon VBA. Nous en discuterons en détail dans quelques minutes, mais une meilleure description de la propriété VBA UsedRange estSpécifie une plage de cellules dans une feuille de calcul dont le contenu, la mise en forme, les commentaires ou toute autre modification.C'est un excellent moyen de mieux contrôler les données de votre feuille de calcul.
Depuisplage d'utilisation
oui fonctionnalitéchamps d'applicationobjet, toutes les propriétés et méthodes disponibles sur le champ sont également disponibles sur l'objetplage d'utilisation
Cela inclut le comptage des colonnes/lignes, la sélection, l'effacement, le formatage et la navigation dans les plages. De plus, vous pouvez en faire un objet nommé pour une référence plus facile, par exemple :
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisation
Où
Ensemble d'objets nommés, par ex.. nettoyer
méthode, votre variable
Pour montrer VBA UsedRange en action, ajoutez quelques valeurs à une feuille de calcul vierge et exécutez cette courte macro :
Enfant Sélectionnez le domaine d'utilisation() feuille d'activité.plage d'utilisation.choisirfin Enfant
Cette macro sélectionne la plage utilisée dans la feuille de calcul. Vous pouvez voir que VBA essaie d'utiliser les données de la feuille de calcul pour calculer la première et la dernière cellule et sélectionner tout dans cette plage. Notez que dans le diagramme ci-dessous, toutcellule videIl est également inclus dans la plage utilisée lors de l'utilisation de la propriété UsedRange. Bien que vous pensiez que ce serait le cas, la propriété VBA UsedRange ne se contente pas d'enregistrerALLIANCEToutes les cellules contenant des données.
forme de série
Comme nous venons de le montrer, VBA ne permet pas de choisir la forme de la ligne masquéeplage d'utilisation
.Crée toujours un rectangle et commence dans le coin supérieur gauche et s'ouvre pour capturer la ligne la plus basse et la colonne de droite. Bien qu'elles définissent les limites de UsedRange, les cellules supérieures gauche et inférieure droite peuvent ne contenir aucune valeur.
Par exemple,plage d'utilisation
Sur cette photo c'est
UsedRange et cellules non remplies
Créez des macros puissantes avec le kit de développement VBA gratuit C'est vraiment chouette. Si vous avez des difficultés à comprendre ou à vous souvenir,Kit de développement VBApuis-je aider. Il est chargé de raccourcis VBA pour vous aider à créer vos propres macros comme celle-ci - nous vous enverrons une copie avecGrand Livre Excel VBA, à votre adresse e-mail ci-dessous.
Utiliser des lignes et des colonnes
plage d'utilisation
Trouvez facilement la première et la dernière ligne et colonne utilisées dans une feuille de calcul. Par extension, il peut être utilisé pour compter le nombre de lignes et de colonnes qui aiderontitérer sur la boucle for.
utiliser. adresse
propriété
Une façon d'obtenir la première paire ligne/colonne et la dernière paire ligne/colonne consiste à utiliser. adresse
Propriétés d'UsedRange :
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationdébogage.Imprimer rng.adresse
Cela renverra la chaîne
première ligne première colonne
Vous pouvez aussi utiliser. Série
et. Colonne
caractéristique:
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationdébogage.Imprimer rng.Sériedébogage.Imprimer rng.Colonne
Cela renvoie simplement les premiers numéros de ligne et de colonne de la plage (1 et 2 dans notre exemple), correspondant à
le numéro estdernierLes lignes et les colonnes nécessitent plus de travail. Une façon d'obtenir la dernière ligne et colonne de UsedRange consiste à utilisernumérotage
propriété.
compter les lignes et les colonnes
Pour obtenir le nombre de lignes et de colonnes dans une plage, vous pouvez utiliser. numérotage
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationdébogage.Imprimer rng.Nombre de lignes.numérotagedébogage.Imprimer rng.Liste.numérotage
Dans notre exemple ci-dessus, cela renverrait 25 et 4.
dernière ligne et dernière colonne
Si la première cellule de UsedRange est. numérotage
Le nombre de lignes et de colonnes est égal à la dernière ligne et colonne que vous avez utilisées.
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationla dernière ligne = rng.Nombre de lignes.numérotage '25dernière rangée = rng.Liste.numérotage '4
Cependant ce n'est pas souvent le cas.Si vos données ne proviennent pas de$1 $A
, cette méthode ne fonctionnera pas !
Comme vous pouvez le voir sur notre image d'exemple, la dernière ligne est en effet la ligne 25. Cependant, la dernière colonne estNonColonne 4 (D). Il s'agit de la colonne 5 (E). Pour être plus puissant, il faut ajouter le numéro de la première ligne/colonne au nombre de lignes/colonnes.
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationpremière rangée = rng.Sériepremière rangée = rng.ColonneNombre de lignes = rng.Nombre de lignes.numérotageLe nombre de colonnes = rng.Liste.numérotage"N'oubliez pas de soustraire 1 pour éviter de compter deux fois la première ligne/colonnela dernière ligne = première rangée + Nombre de lignes - 1dernière rangée = première rangée + Le nombre de colonnes - 1
Nous avons maintenant le résultat attendu {25, 5} au lieu de {25, 4}. N'oubliez pas de soustraire 1 du résultat final, sinon vous compterez deux fois la première ligne et la première colonne.
Maintenant que nous avons montré la logique de calcul de la dernière ligne et colonne utilisée dans UsedRange,Laissez-nous vous montrer un moyen plus simple.Pour enregistrer la dernière ligne et colonne utilisée dans la plage utilisée, utilisez simplement le raccourci suivant :
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationla dernière ligne = rng.Nombre de lignes(rng.Nombre de lignes.numérotage).Sériedernière rangée = rng.Liste(rng.Liste.numérotage).Colonne
Pour le nombre de boucles
Notez que nous continuons à utiliser. numérotage
propriété. Ce. numérotage
Les attributs sont également utiles lors de la création de boucles. Commencez par la première ligne/colonne et traitez toute la plage jusqu'à la dernière ligne/colonne. Pour une approche simplifiée qui ne fait que parcourir les lignes, supposons que la feuille de calcul ne contienne que des données numériques dans la colonne A. Vous pouvez stocker un ensemble actuel de nombres dans la colonne B (colonne 2) à l'aide d'une macro comme celle-ci :
Enfant total cumulé()faible première rangée comme entier, la dernière ligne comme entier, ligne je comme entierfaible rng comme champs d'applicationje mets rng = feuille d'activité.plage d'utilisationpremière rangée = rng.Sériela dernière ligne = rng.Nombre de lignes(rng.Nombre de lignes.numérotage).SériePour ligne je = première rangée atteindre la dernière ligne si ligne je = première rangée après cellule(ligne je, 2) = cellule(ligne je, 1) "Commencez avec un ensemble en cours d'exécution mais cellule(ligne je, 2) = cellule(ligne je, 1) + cellule(ligne je - 1, 2) "Ajoute le jeu d'exécution précédent à la nouvelle entrée fin siSuivant ligne jefin Enfant
Vous aurez besoin de deux boucles imbriquées pour parcourir les lignes et les colonnes de la plage que vous utilisez, comme ceci :
Enfant LoopThroughUsedRange()faible première rangée comme entier, la dernière ligne comme entierfaible première rangée comme entier, dernière rangée comme entierfaible ligne je comme entier, iCol comme entierfaible rng comme champs d'applicationje mets rng = feuille d'activité.plage d'utilisation "Stocker la plage utilisée dans une variablepremière rangée = rng.Sériepremière rangée = rng.Colonnela dernière ligne = rng.Nombre de lignes(rng.Nombre de lignes.numérotage).Sériedernière rangée = rng.Liste(rng.Liste.numérotage).ColonnePour iCol = première rangée atteindre dernière rangée Pour ligne je = première rangée atteindre la dernière ligne débogage.Imprimer cellule(ligne je, iCol).adresse & " = " & cellule(ligne je, iCol) Suivant ligne jeSuivant iColfin Enfant
Si vous souhaitez modifier les données uniquement dans les cellules de UsedRange qui ne sont pas vides, appliquezFonction VBA IsEmpty.
propriétés et méthodes
Une fois que vous avez appris à naviguer dans UsedRange, l'application de propriétés à l'aide de VBA est un jeu d'enfant. Les fonctionnalités vous permettent de faire des choses comme changer une zone entière en gras. Notez que les attributs seront appliqués àtousplage, même si la cellule est vide. Revenir en arrière et corriger la mise en forme d'une feuille entière à cause d'une seule mauvaise ligne de code serait fastidieux.
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationrng.Police de caractère.audacieux = réel
Cette section macro est en train de changertoutes les cellulesÉcriture en gras sur des feuilles contenant des données (ou mise en forme plus cellules vides entre les cellules utilisées). Vous pouvez faire la même chose avec la couleur, la couleur de remplissage des cellules,Format de nombreAttendez. Notez à nouveau que cette propriété s'appliquera à toute la plage d'utilisation, donc si vous avez un tableau bien formaté avec 5000 cellules, assurez-vous de mettre toutes les 5000 cellules en gras avant d'exécuter ces lignes de code !
gamme claire
Une autre utilisation très couranteplage d'utilisation
c'est pourSupprimer le contenu de la feuille de calcul.Lorsque vous utilisez UsedRange, vous n'avez pas besoin de trouver la dernière ligne/colonne comme nous l'avons fait ci-dessus. Après réglage
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationrng.nettoyer ' ou rng.ClearContents efface simplement les données
Assurez-vous à nouveau que vous voulez le supprimertousFormat de données et feuille de calcul. comme utilisersudo rm-r
Sous Linux : Puissant et pratique, mais dangereux.
Créez des macros puissantes avec le kit de développement VBA gratuit C'est vraiment chouette. Si vous avez des difficultés à comprendre ou à vous souvenir,Kit de développement VBApuis-je aider. Il est chargé de raccourcis VBA pour vous aider à créer vos propres macros comme celle-ci - nous vous enverrons une copie avecGrand Livre Excel VBA, à votre adresse e-mail ci-dessous.
plage de navigation
La portée permet l'accèspar rapport à la gamme elle-mêmeplutôt que par rapport à la feuille de calcul. Par exemple, dans notre tableau ci-dessus, la première colonne est en fait B, pas A. Si nous connaissons la disposition des colonnes du tableau - nom de l'axe, rang, pays, population - nous pouvons nous référer à
- Par rapport à la colonne Population de la feuille de travail = 5
- Colonne de population vs plage utilisée = 4
Supposons que l'utilisateur déplace la table vers une position différente dans la feuille de calcul pour une raison quelconque. Si vous aviez codé la macro pour obtenir la population par rapport à la feuille de calcul, vous pourriez maintenant obtenir par inadvertance les mauvaises données. Il est plus robuste d'utiliser la structure du tableau lui-même comme référence :
faible rng comme champs d'applicationje mets rng = drap de lit("tableau des buts").plage d'utilisationrng.Liste(4).Police de caractère.audacieux = réel
Par exemple, si l'utilisateur déplace le début du tableau à $H$15, nous pouvons mettre la colonne de population en gras car la colonne de population sera toujours la colonne 4 dans UsedRange.
changements cachés
Il y a au moins une mise en garde en cours d'utilisationplage d'utilisation
C'est une question importante à considérer. Les avertissements font référence à des modifications invisibles. Les cellules qui ont été modifiées de manière invisible (telles que la mise en forme des nombres, les changements de police ou même les commentaires) seront incluses dans la couverture UsedRange. Cela signifie que si l'utilisateur met accidentellement en italique une cellule sans données, cette cellule compte toujours comme une "plage utilisée", de sorte que UsedRange peut être plus élevé que prévu. Cette extension apparaît lorsqu'elle est sélectionnéeplage d'utilisation
seront inclus dans. numérotage
et. adresse
caractéristique.
Ce n'est pas toujours un problème, mais cela peut créer des problèmes qui sont facilement négligés. chez nous
Les modifications de format affectent la plage d'utilisation de VBA
Les cellules n'ont pas beaucoup changéplage d'utilisation
Envisagez de modifier la mise en forme et incluez des régions entières
plage d'utilisation
Trouvez facilement la première ligne/colonne et appliquez la mise en forme à n'importe quelle cellule de feuille de calcul utile. Cela facilite également la recherche de la dernière ligne / colonne et, plus important encore, vous aide à configurer des boucles.
Si vous avez trouvé ce didacticiel utile, abonnez-vous en utilisant le formulaire ci-dessous et nous partagerons des conseils VBA similaires pour vous aider à tirer le meilleur parti du langage de programmation.
Prêt à en faire plus avec VBA ?
Nous avons créé un énorme PDF avec plus de 300 macros prédéfinies et souhaitons que vous l'obteniez gratuitement. Entrez votre adresse e-mail ci-dessous et nous vous enverrons une copie avec la nôtreKit de développement VBA, avec des conseils, des astuces et des raccourcis VBA.
Cet article a été écrit par Cory Sarver, un contributeur du blog The VBA Tutorials.lui rendre visiteLinkedInet le sienpage personnelle.
FAQs
How to use UsedRange in Excel VBA? ›
- Write a Code with UsedRange.
- Copy UsedRange.
- Count Rows and Columns in the UsedRange.
- Activate the Last Cell from the UsedRange.
- Refer to UsedRange in a Different Worksheet.
- Get the Address of the UsedRange.
- Count Empty Cells from the Used Range.
In VBA, there is a method called ClearContents that you can use to clear values and formulas from a cell, a range of cells, and the entire worksheet. To use this method, first, you need to define the expression somewhere you want to clear the content, and then type “. ClearContents”.
What is UsedRange format in VBA? ›UsedRange is the used area of an Excel sheet. VBA UsedRange includes all cells that currently have data or some formatting . (colors/borders/shading)/earlier had data/cell format. The last row/column of data or the number of columns/rows in a used range of a sheet can be found using the UsedRange property in VBA.
How to check range value in VBA? ›In the VBA editor go to the View menu and click on Locals Window. Each time F8 is pressed one line of VBA is executed. When the range MyRange is set, you can see that values appear for it in the Locals window. By examining the MyRange object you can drill down to see the values in it.
How to select data range in VBA? ›- Select a Single Cell. ...
- Select a Range of Cells. ...
- Select Non-Continues Range. ...
- Select a Column. ...
- Select a Row. ...
- Select All the Cells of a Worksheet. ...
- Select a Named Range. ...
- Select an Excel Table.
- Click "Developer" in Excel's menu bar.
- Click the Visual Basic icon in the ribbon's Code tab to launch the Visual Basic for Applications window.
- Select the macro in the window's Project box that you want to read Excel's data.
- Type the following line of code: ...
- Replace "Integer" with "String" if the cell contains a string.
ClearContents is a method in VBA used to delete or remove the values stored in the cells provided to it. This method makes the cell range empty. It is used with the range property to access the specified cell range. An example of this method is range(“A1:B2”).
How do I clear data from a macro in Excel? ›- Open an excel workbook.
- Enter some data in Sheet1 at A1:C10.
- Press Alt+F11 to open VBA Editor.
- Insert a Module for Insert Menu.
- Copy the above code and Paste in the code window.
- Save the file as macro enabled workbook.
- Press F5 to run it.
The most common clear method is ClearContents. ClearContents clears only the contents of cells (cell values / text). It does not clear formatting, comments, or anything else. ClearContents is the same as pressing the Delete key on your keyboard.
How does VBA range work? ›In the context of the Excel worksheet, the VBA range object includes a single cell or multiple cells spread across various rows and columns. For example, the range property in VBA is used to refer to specific rows or columns while writing the code. The code “Range(“A1:A5”).
How to use VBA for web scraping? ›
- Step 1 - Open Microsoft Excel. ...
- Step 2 - Go to Options to enable developer menu. ...
- Step 3 - Select Customize Ribbon. ...
- Step 4 - Open Visual Basic application dialog. ...
- Step 5 - Insert a new Module. ...
- Step 6 - Add new references. ...
- Step 7 - Automate Microsoft Edge to open a website.
Manually reset the used range:
Hold the Ctrl and Shift keys, and press the Down Arrow key. Right-click in the selected cells, and, from the shortcut menu, choose Delete. Select Entire Row, click OK.
Step 1: Again open the module and write the subprocedure, preferably in the name of VBA Set Range. Step 2: Choose the cell where you want to set the Range. We have chosen cell A1 as shown below. Step 3: Put the name or value which we want to insert in the select Range cell.
How do you set range range cells in VBA? ›Set Range in Excel VBA. Set range in VBA means we specify a given range to the code or the procedure to execute. If we do not provide a specific range to a code, it will automatically assume the range from the worksheet with the active cell. So, it is very important in the code to have a range variable set.
How to set range for range variable in VBA? ›Use the “Dim” keyword and enter the name of the variable. Declare the keyword as Range. Type the name of the variable. Specify the range that you want to assign to the variable.
What is the used region in VBA? ›The UsedRange in VBA is a worksheet property that returns a range object representing the range used (all Excel cells used or filled in a worksheet) on a particular worksheet. It is a property representing the area covered or bounded by the top-left used cell and the last right-used cells in a worksheet.
What is UsedRange in Excel? ›A used range includes any cell that has ever been used. For example, if cell A1 contains a value, and then you delete the value, then cell A1 is considered used. In this case, the UsedRange property will return a range that includes cell A1.
How to use range dynamically in VBA? ›- Method-1: Select Cells Containing Values Through UsedRange Property.
- Method-2: Choose Dynamic Range Including Headers with CurrentRegion Property.
- Method-3: SpecialCells for Selecting Dynamic Range Excluding Headers.
- Method-4: Change Color for Last Used Row with Excel VBA.