Déterminer si une feuille existe dans un classeur à l’aide VBA dans Microsoft Excel
Il peut y avoir un moment où vous devez vérifier si une feuille de calcul, que vous avez créée ou supprimée dans un classeur dans une macro / code VBA, existe. Nous pouvons le faire facilement en utilisant une fonction / macro. Il existe plusieurs façons de vérifier si une feuille de calcul existe.
Nous couvrirons les manières suivantes dans cet article:
{vide} 1. Fonction définie par l’utilisateur appelée UDF 2. Sous-routine via la boîte de message
Première option: fonction définie par l’utilisateur
L’instantané suivant contient quelques noms de feuilles et nous vérifierons si les noms de feuille dans la colonne A existent.
Pour savoir si une feuille spécifique existe, nous devons suivre les étapes ci-dessous pour lancer l’éditeur VB Cliquez sur l’onglet Développeur Dans le groupe Code, sélectionnez Visual Basic
-
Copiez le code ci-dessous dans le module standard
Option Explicit Function WorksheetExists(ByVal WorksheetName As String) As Boolean Dim Sht As Worksheet For Each Sht In ThisWorkbook.Worksheets If Application.Proper(Sht.Name) = Application.Proper(WorksheetName) Then WorksheetExists = True Exit Function End If Next Sht WorksheetExists = False End Function
Afin de vérifier, nous utiliserons UDF dans la cellule B2 comme = WorksheetExists (A2)
-
Dans l’image ci-dessus, «MasterSheet» n’existe pas dans notre exemple de classeur; par conséquent, la formule a donné la réponse False
Explication du code:
Cette fonction prend la valeur de «WorksheetName» de la macro qui exécute d’autres activités. Si vous devez le modifier selon votre code, vous pouvez.
For Each Sht In ThisWorkbook.Worksheets et Next Sht sont respectivement les parties de début et de fin de la boucle.
Then If Application.Proper (Sht.Name) = Application.Proper (WorksheetName) Then _ WorksheetExists = True_ Vérifie si le nom de la feuille correspond au nom de la feuille transmis par la macro principale. Si c’est le cas, WorksheetExists a la valeur True et nous pouvons quitter la fonction. Sinon, WorksheetExists = False est renvoyé à la macro principale. La boucle va de la 1ère feuille à la suivante jusqu’à ce que toutes les feuilles aient été vérifiées.
SecondOption: Sous-routine via la boîte de message
Nous pouvons avoir un sous-programme normal qui appelle un UDF et, si la feuille spécifiée est trouvée, la boîte de message affichera, « feuille existe »; si non trouvé, alors msgbox apparaît, «feuille non trouvée».
Pour vérifier, nous allons copier le code suivant dans le module standard:
Function WorksheetExists2(WorksheetName As String, Optional wb As Workbook) As Boolean If wb Is Nothing Then Set wb = ThisWorkbook With wb On Error Resume Next WorksheetExists2 = (.Sheets(WorksheetName).Name = WorksheetName) On Error GoTo 0 End With End Function Sub FindSheet() If WorksheetExists2("Sheet1") Then MsgBox "Sheet1 is in this workbook" Else MsgBox "Oops: Sheet does not exist" End If End Sub
Après avoir exécuté la macro «FindSheet», nous obtiendrons la boîte de message suivante si la feuille existe:
Si la feuille n’existe pas, nous obtiendrons la boîte de message suivante:
De même, nous pouvons avoir une simple boucle IF qui vérifie si la feuille existe et effectue certaines actions par la suite.
Sub test() Dim ws As Worksheet For Each ws In ThisWorkbook.Worksheets If ws.Name <> "Main" Then ws.Range("A1").Value = ws.Name Else ws.Range("A1").Value = "MAIN LOGIN PAGE" End If Next ws End Sub
Pour tester la macro ci-dessus, nous devons créer un nom de feuille «Main». Cette macro est très simple Elle parcourt chaque feuille de calcul du classeur Ensuite, elle vérifie si le nom de la feuille de calcul n’est pas PRINCIPALE Si elle est PRINCIPALE, elle affiche du texte, comme «PAGE DE CONNEXION PRINCIPALE» dans A1 de cette feuille, sinon elle affiche le nom la feuille dans la cellule A1
C’est juste une autre façon de vérifier si la feuille existe. S’il existe, effectuez l’action A, sinon, l’action B Conclusion: * Nous pouvons identifier si une feuille existe dans notre classeur ou non; nous pouvons utiliser UDF ou sous-programme selon notre convenance.
Si vous avez aimé nos blogs, partagez-les avec vos amis sur Facebook. Et vous pouvez aussi nous suivre sur Twitter et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer, compléter ou innover notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]