Comment faire pour modifier une Plage Nommée Portée
Quand je créer une plage nommée par le Gestionnaire de noms, je me suis donné la possibilité de spécifier Classeur ou [worksheet name]
portée. Mais si vous voulez ensuite modifier l'étendue, la liste déroulante est grisé. Est-il un moyen, soit dans le Nom du Gestionnaire ou, preferablly, VBA pour modifier la portée d'une plage nommée?
Par exemple:
testName
se réfère à'sheet1'!A1:B2
avec portée Classeur. Comment pourrais-je la remplacertestName
se réfère à'sheet1'!A1:B2
avec 'feuil1' portée?
OriginalL'auteur Stevil | 2009-06-29
Vous devez vous connecter pour publier un commentaire.
Vous pouvez télécharger gratuitement le Gestionnaire de noms de complément développé par moi-même et Jan Karel Pieterse de
http://www.decisionmodels.com/downloads.htm
Cela permet à beaucoup de noms que le Excel 2007 gestionnaire de noms ne peut pas gérer, y compris l'évolution de la portée de noms.
En VBA:
La question d'origine me semble clair: "Par exemple, "nomtest" se réfère à 'feuil1'!A1:B2 avec portée Classeur. Comment puis-je changer cela en "nomtest" se réfère à 'feuil1'!A1:B2 avec 'feuil1' portée?"
Merci pour le complément. Il fonctionne très bien.
Heads up, si votre Feuille le Nom commence par un chiffre ou a des espaces, il doit alors être échappés avec des guillemets simples
"'Sheet1'!TestName"
je le recommande toujours d'échapper le nom de code. Ne fait de mal à rien s'il n'est pas nécessaire.Je suis heureux d'avoir fait ça. Il fonctionne bien.
OriginalL'auteur
J'ai trouvé la solution! Il suffit de copier la feuille avec vos variables nommées. Supprimez la feuille d'origine. La feuille copiée auront désormais la même nommé variables, mais avec une portée (scope= la feuille copiée).
Cependant, je ne sais pas comment faire pour le changement de variables locales mondiale..
Cette solution n'a pas fonctionné pour moi avec Excel 2013
Agréable et rapide de la solution, utile si vous voulez appliquer la même action pour tous les noms. Avec Excel 2010, après le retrait de la feuille d'origine, j'ai été laissé avec les noms d'origine avec Classeur portée (montrant #REF!...), mais j'ai pu l'enlever rapidement.
OriginalL'auteur
Découvrez ces deux sous-marins qui inverse les uns des autres et de retourner la portée (feuille de classeur ou inverse) de toutes les plages nommées faire référence à une plage de la feuille active.
OriginalL'auteur
voici comment je fais la promotion de tous les noms de feuille de calcul à des noms globaux. YMMV
Ce code a fonctionné pour moi.
Il semble bien fonctionner en 2013, mais pour 2010 et au-dessous, vous devez définir ces variables d'abord:
Dim wsh As Worksheet Dim N As Object
Cette juste supprime tous les noms de cette feuille de calcul. Il doit créer un nouveau
Name
se référant à la même fourchette avant de les supprimer.OriginalL'auteur
créer le nouveau nom à partir de zéro et supprimer l'ancien.
OriginalL'auteur
Une autre façon est de "pirater" le fichier Excel 2007 ou plus élevé, mais il est conseillé d'en prendre soin si vous faites cela, et de conserver une sauvegarde de l'original:
D'abord enregistrer la feuille de calcul Excel comme une .xlsx ou .fichier xlsm (non binaire). renommez le fichier .zip, puis décompressez-le. Aller à la xl dans le dossier zip et ouvrir la structure workbook.xml dans le bloc-notes ou un éditeur de texte similaire. Les plages nommées sont trouvés dans la definedName balises. Local de la portée est définie par localSheetId="x" (la feuille Id peuvent être trouvés en appuyant sur Alt-F11 dans Excel, le tableur open, pour accéder à la fenêtre VBA, et puis, regardant la fenêtre Projet). Caché plages sont définies par hidden="1", donc il suffit de supprimer le hidden="1" pour afficher, par exemple.
Maintenant rezip la structure du dossier, en prenant soin de maintenir l'intégrité de la structure de dossier et renommez-le .xlsx ou .xlsm.
Ce n'est probablement pas la meilleure solution, si vous avez besoin de changer le champ d'application de ou de masquer/afficher un grand nombre de plages définies, mais il fonctionne très bien pour faire une ou deux petites modifications.
OriginalL'auteur
Il y a encore plus de raffinage fonctionne cependant avec tous les simples références, sans tuer des locaux existants noms.
OriginalL'auteur
Le code de JS20'07'11 est vraiment incroyable, simple et directe. Une suggestion que je voudrais faire est de mettre un point d'exclamation dans les conditions:
Parce que cela permettra d'éviter l'ajout d'un NamedRange dans une mauvaise Feuille. Ex: Si le NamedRange fait référence à une Feuille nommée Plan11 et vous avez une autre Feuille nommée Plan 1 le code peut faire quelques dégâts lors de l'ajouter les plages si vous n'utilisez pas le point d'exclamation.
Mise à JOUR
Une correction: Il est préférable d'utiliser une expression régulière évaluer le nom de la Feuille. Une fonction simple que vous pouvez utiliser est le suivant (adapté par http://blog.malcolmp.com/2010/regular-expressions-excel-add-in, activer Microsoft VBScript Regular Expressions 5.5):
Ainsi, Vous pouvez utiliser quelque chose comme ça:
au lieu de
Cela permettra de couvrir Plan 1 et 'Plan 1' (lorsque la plage se réfère à plus d'une cellule) variations
CONSEIL: Évitez les noms de Feuille de calcul avec des guillemets simples ('), 🙂 .
OriginalL'auteur
Pour moi, il fonctionne que lorsque je crée nouveau Nom de la balise pour la même gamme de la Gestionnaire de noms il me donne la possibilité de changer le champ d'application 😉 classeur est livré par défaut et peut être modifié à tout de la disposition des feuilles.
OriginalL'auteur
Ces réponses ont été utiles dans la résolution d'un problème similaire, tout en essayant de définir une plage nommée avec
Workbook
portée. Le "ah-HA!" pour moi, c'est d'utiliser le Noms de Collection qui est relatif à la Classeur entier! Cela peut être reprendre la évident pour beaucoup, mais il n'était pas clairement indiqué dans mes recherches, donc je partage pour d'autres avec des questions similaires.Si vous regardez la liste de vos noms lors de la Feuil2 est active, les deux plages sont là, mais passer à un autre de la feuille, et
"a_test_rng1"
n'est pas présent.Maintenant je peux heureusement générer une plage nommée dans mon code avec ce que jamais portée, je juge approprié. Pas besoin de déconner avec le gestionnaire de noms ou un plug-in.
Côté, le gestionnaire de noms dans Excel Mac 2011 est un gâchis, mais je n'ai découvert que, bien que il n'y a pas des étiquettes de colonne pour vous dire ce que vous êtes en train de regarder lors de l'affichage de votre liste de plages nommées, si il ya une feuille figurant à côté du nom, ce nom est associé à la feuille de calcul /local. Voir la capture d'écran ci-joint.
Pleine de crédit à cet article pour rassembler les morceaux.
OriginalL'auteur
Trouvé ce à theexceladdict.com
Sélectionner la plage Nommée sur votre feuille de calcul dont le champ que vous souhaitez modifier;
Ouvrir le Gestionnaire de noms (onglet Formules) et sélectionnez le nom;
Cliquez sur Supprimer, puis sur OK;
Cliquez sur Nouveau et saisissez le nom d'origine de retour dans le champ Nom;
Assurez-vous que la Portée est définie pour Classeur et cliquez sur Fermer.
OriginalL'auteur