Reportez-vous à la feuille en utilisant le nom de code
Je reçois une "incompatibilité de type" erreur dans ce code:
With Worksheets(Sheet1) '* Error here
'my code here
End With
Ma feuille de CodeName
est 'sheet1'
.
Quelqu'un peut-il m'aider à supprimer l'erreur?
qu'entendez-vous bu de la fiche de nom de code ? ne youmean une variable représentant la feuille de nom ? pouvez-vous expliquer en donnant un exemple ?
Chaque fiche a un nom de code comme feuil1 , feuil2, etc Lorsque vous renommez une feuille par exemple: feuil1 "abc", Le nom de code reste le même.
désolé, mais je ne suis pas de vous suivre. Une feuille de calcul a 2 propriétés pertinentes à ce que vous décrivez: l'un est la
Je veux dire le nom de l'Index. Comment utiliser maintenant?
Prudent de donner des corrections avec la mauvaise info! Il y a également un
Chaque fiche a un nom de code comme feuil1 , feuil2, etc Lorsque vous renommez une feuille par exemple: feuil1 "abc", Le nom de code reste le même.
désolé, mais je ne suis pas de vous suivre. Une feuille de calcul a 2 propriétés pertinentes à ce que vous décrivez: l'un est la
Sheet.Name
, une fois que vous modifiez votre feuille le nom de "Sheet1" à "abc", puis dans votre code, vous devez le modifier à partir de Worksheets("Sheet1")
à Worksheets("abc")
. L'autre est le Index
, qui reste le même. à l'aide de votre exemple de sheet1
, même si vous modifiez son nom, vous pouvez toujours refference dans votre code par Worksheets(1)
. Alors, lequel des deux voulez-vous dire par "nom de code" ?Je veux dire le nom de l'Index. Comment utiliser maintenant?
Prudent de donner des corrections avec la mauvaise info! Il y a également un
CodeName
propriété qui est différente de la Name
et Index
. Comme user007 décrit, il reste sur la feuille1, feuille2, ... et est le nom de pas entre crochets dans le Projet VBA panneau de l'Explorateur. Voir la documentation ici msdn.microsoft.com/en-us/library/office/ff837552.aspx
OriginalL'auteur user007 | 2017-01-05
Vous devez vous connecter pour publier un commentaire.
1) se Reporter à la feuille par Index:
L'Index dépend de l'ordre de feuilles dans le classeur". Si vous traînez vos feuilles de commande, cela peut ne pas se référer à la même feuille plus!
2) se Reporter à la fiche de Nom:
C'est le
.Name
propriété d'une feuille de calcul, et le nom est visible dans l'onglet de feuille de calcul Excel et entre crochets dans le Projet VBA Explorer.3) voir la fiche de nom de Code:
Vous suggère de vous en fait voulu utiliser le
.CodeName
propriété de feuille de calcul. Cela ne peut être une référence à l'intérieur des crochets comme les deux exemples ci-dessus, mais n'existe pas contrairement à certaines réponses ci-dessus! Il est attribué automatiquement à une fiche d'information sur la création, et est "Feuille" alors, la prochaine nombre inutilisé dans le déjà créé des noms de code.L'avantage de l'utilisation de
CodeName
est qu'il ne dépend pas de la feuille de commande (à la différence de laIndex
) et elle ne change pas si un utilisateur modifie leName
simplement par le fait de renommer la feuille dans Excel.L'inconvénient est que le code peut être plus complexe ou ambigu. Depuis
CodeName
est en lecture seule [1] cela ne peut pas être améliorée, mais n'a assurer les avantages ci-dessus! Voir les documents référencés pour plus de détails.Première façon de l'utiliser: directement...
Deuxième façon de l'utiliser: indirectement, peut offrir plus de clarté ou de la flexibilité, montre comment utiliser la
CodeName
propriété d'une feuille de calcul...En boucle sur les feuilles et la lecture de la
CodeName
de la propriété, vous pouvez d'abord trouver leIndex
ouName
propriété de votre feuille souhaitée. Ensuite, vous pouvez utiliser cette référence à la feuille.[1] https://msdn.microsoft.com/en-us/library/office/ff837552.aspx
CodeName
est en lecture seule seulement pendant l'exécution. je pense que c'est une distinction importante. Alors que le mode de développement, lacodeName
peut être manuellement modifié dans la fenêtre de propriétés d'un drap. (Accessible via l'onglet affichage, dans le VBA développeur de la fenêtre.) Cela permettrait à un codeur de donner une feuille qu'ils utilisent constamment une plus instructifcodename
au lieu de la valeur par défaut "de la Fiche de travail".Merci @Mistella, des éclaircissements utiles pour d'autres lecteurs
Je crois que "la prochaine nombre inutilisé" pourrait être retraité ou simplement interprété comme "le prochain numéro non attribué" (c'est à dire, le côté non-précédemment affecté), bien que l'on pourrait appeler de la sémantique. Si vous supprimez Feuil2 puis insérez une feuille, il portera le nom de la nouvelle Feuil3 ou Feuil4 ou quel que soit le côté qui n'a jamais été affecté, plutôt que de le nommer Feuil2 (le nom supprimé, ce qui est actuellement "non utilisé"). Le mot pourrait être "à côté", ce qui semble signifier "suivant plus élevé que le plus haut précédemment affectés". BTW, pour une appellation d'aventure, de supprimer feuil2 et renommez feuil1 feuil2 puis insérez les feuilles 🙂
Mon sens a été "utilisé" = "inutilisés jamais dans ce classeur", je pense que c'est facilement aussi clair que l'utilisation de "non affecté", ce qui me permettrait d'interpréter la même... mais je reçois votre point de vue.
OriginalL'auteur Wolfie
Vous pouvez utiliser la feuille de noms de code directement dans votre code comme s'ils étaient les variables déclarées:
With Sheet1
instruction, vous pouvez utiliser.[a1] = .Name
oui, vous le pouvez. J'ai essayé de montrer les différentes façons d'utiliser le nom de code.
OriginalL'auteur Mark Fitzgerald
Il y a trois différentes propriétés qui pourrait être utilisé pour se référer à une feuille de calcul:
.Name
commeWorksheets("SomeNameHere")
dansWorksheets("SomeNameHere").Range("A1")
.Index
commeWorksheets(2)
dansWorksheets(2).Range("A1")
.CodeName
commeSheet3
dansSheet3.Range("A1")
Pour voir la différence, exécutez le code ci-dessous et prendre un coup d'oeil à la fenêtre Ctrl+G:
Si le
Name
et laCodeName
de la feuille de calcul ne sont pas modifiées, elles doivent être les mêmes.OriginalL'auteur Vityata
Peut-être que ce code permet de comprendre les différents noms et l'index
OriginalL'auteur Storax
Nom de code est en fait de la lecture-écriture au moment de l'exécution lors de l'accès à la propriété creux de la Feuille de calcul.Parent.VBProject.VBComponents:
OriginalL'auteur Dutch Gemini
D'utiliser le
Worksheet.Index
dans votre code:.Name= " "
u Peut me dire un moyen par lequel je n'ai pas de préciser le nom de la feuille?vous n'avez pas besoin de connaître le nom à tous, je viens de montrer une manière de le modifier, je vais supprimer cette option. que voulez-vous faire dans le code ?
OriginalL'auteur Shai Rado