Excel onglet de la feuille de noms ou de Visual Basic noms de feuille de calcul
Il semble que Visual Basic ne peut pas des feuilles de référence en fonction de l'utilisateur modifié les noms de feuilles. Les onglets de feuille de calcul peut avoir changé leur nom, mais il semble que Visual Basic pense toujours à la feuille de calcul en tant que noms de la feuille Sheet1, etc., malgré le classeur onglet ayant changé pour quelque chose d'utile.
J'ai ceci:
TABname = rng.Worksheet.Name ' Excel sheet TAB name, not VSB Sheetx name.
mais j'aimerais utiliser les noms de feuille de calcul dans Visual Basic routines. Le meilleur que j'ai pu venir jusqu'ici est de Sélectionner des Cas, l'Onglet de Feuille de calcul vs Visual Basic noms, ce qui ne veut pas faire de ma journée.
Visual Basic doit connaître la Feuil1, Feuil2, etc., des noms. Comment puis-je obtenir ces associés avec Excel, les noms des onglets de sorte que je n'ai pas à maintenir une look-up table qui change à chaque nouvelle feuille ou une feuille de l'onglet re-nommage?
Merci d'avance pour vos réponses.
OriginalL'auteur SteveNeedsSheetNames | 2010-04-16
Vous devez vous connecter pour publier un commentaire.
Dans le modèle objet d'Excel une Feuille de calcul a 2 différentes propriétés de nom:
Feuille de calcul.Nom
Feuille de calcul.Nom de code
le Nom de la propriété est en lecture/écriture et contient le nom qui s'affiche sur l'onglet de la feuille. Il est d'utilisateur et VBA variable
le nom de Code de la propriété est en lecture seule
Vous pouvez faire référence à une feuille spécifique comme
Worksheets("Fred").Range("A1") où Fred est le .Nom de la propriété
ou comme
La feuille Sheet1.Range("A1") où la feuille "Sheet1" est le nom de code de la feuille de calcul.
Maintenant, je veux avoir une fonction visual basic avec un Tableau de sortie, et je veux que la sortie de la disposition d'une autre fonction, sans avoir à le mettre sur une feuille de calcul de choisir dans cette seconde fonction. Est-il un moyen de transférer les tableaux entre les fonctions de visual basic? Merci d'avance pour votre réponse.
OriginalL'auteur Charles Williams
Cela va changer tous les objets de feuille de calcul noms (du point de vue de l'éditeur VBA) pour correspondre à celle de leurs noms de feuille de calcul (à partir de la perspective d'Excel):
Il est important de noter que le nom de l'objet (nom de code) "(Nom)" est remplacée par le nom de la propriété "Nom", et donc il doit être référencé en tant que sous-propriété.
.Propriétés("Nom").La valeur est EXACTEMENT ce que je cherchais, merci!
Le problème de l'inscription de Proc Permet de définir Obtenir des sous-marins Func a été avec moi pendant quelques années où le nom du Module nom de la feuille de nom de code a été un gâchis.. Cette correctifs . Beaucoup apprécié votre code d'Harry S
OriginalL'auteur ark565
Vous devriez être capable de feuilles de référence par l'utilisateur fourni par nom. Êtes-vous sûr que vous faites référence à la bonne Classeur? Si vous avez plus d'un classeur ouvert au moment de vous référer à la feuille, qui pourrait certainement causer le problème.
Si c'est le problème, à l'aide de
ActiveWorkbook
(le classeur actif) ouThisWorkbook
(le classeur qui contient la macro) doit résoudre.Par exemple,
OriginalL'auteur devuxer
Fait "Sheet1" objet /nom de code peut être changé. Dans VBA, cliquez sur la feuille Sheet1 dans Excel de la liste des Objets. Dans la fenêtre propriétés, vous pouvez modifier la feuille Sheet1-à-dire rng.
Ensuite, vous pouvez référencer rng comme un objet global sans avoir à créer une variable de première. Afin de débogage.imprimer rng.nom fonctionne très bien. Pas plus Worksheets("rng").nom.
À la différence de l'onglet, le nom de l'objet a les mêmes restrictions que les autres variables (c'est à dire sans les espaces).
OriginalL'auteur ccampj
Ce basique d'une solution (peut-être que je vais manquer le point complet de la question). ActiveSheet.Nom retournera la chaîne de l'actuel nom de l'onglet (et de refléter toute modification ultérieure par l'utilisateur). Je viens d'appeler la feuille active, définissez la variable, puis l'utiliser comme les Feuilles de calcul' objet. Ici, je suis de la récupération de données à partir d'une table pour définir un rapport à l'intention d'une division. Cette macro fonctionne sur n'importe quelle feuille dans mon classeur qui est formaté pour le même filtre (critères et copytorange) - chaque division a son propre feuille et peut modifier les critères et la mise à jour à l'aide de cette seule macro.
OriginalL'auteur Ottobahn
Il y a (au moins) deux façons d'obtenir de l'
Worksheet
objetSheets
ouWorksheets
collections tel que référencé par DanMLorsqu'un nouveau classeur avec trois feuilles de calcul est créée il y aura quatre objets, auquel vous pouvez accéder via noms non qualifiés:
ThisWorkbook
;Sheet1
;Sheet2
;Sheet3
. Cela vous permet d'écrire des choses comme ceci:Même si cela peut sembler comme un raccourci est utile, le problème vient quand les feuilles sont renommés. Le non qualifiés nom de l'objet reste
Sheet1
même si la feuille de calcul est renommé pour quelque chose de totalement différent.Il y a une certaine logique à cela car:
Par exemple (testé dans Excel 2003), créer un nouveau
Workbook
avec trois feuilles de calcul. Créer deux modules. Dans un module de déclarer ceci:Dans l'autre module de vente:
Exécuter ce et la boîte de message devrait s'afficher correctement.
Maintenant ajouter une quatrième feuille de calcul du classeur qui permettra de créer une
Sheet4
objet. Essayez d'exécution principale, et cette fois, vous obtiendrez un "Objet ne gère pas cette propriété ou méthode" erreurOriginalL'auteur barrowc
À l'aide de la feuille de nom de code était la réponse que j'ai besoin de trop d'arrêter une série de macros tombant sur - ccampj la réponse ci-dessus reflète cette solution (avec des photos)
OriginalL'auteur MickeyBlueOwl
J'ai eu à recourir à ce, mais cela a des problèmes avec l'entretien.
OriginalL'auteur SteveNeedsSheetNames
Peut-être que je me trompe, mais vous pouvez ouvrir un classeur, et sélectionnez une feuille de calcul et le changement de sa propriété (Name) pour tout ce que vous avez besoin qu'il soit. Il remplace le "Feuillex" convention de nommage. Ces noms sont également affichés dans l'Éditeur VBA.
Façon de le faire manuellement:
1. Sélectionnez la feuille dans un classeur (j'ai tendance à créer des modèles).
2. Définir son nom de l'onglet que vous voulez ("foo").
3. Cliquez sur le menu Développeur (que vous avez préalablement activé, non?).
4. Recherchez "Propriétés" et cliquez sur, l'éducation de cette feuille de calcul de la fenêtre propriétés.
5. Le premier élément dans la liste Alphabétique (Nom) et à la droite de (Nom) est "Feuillex".
6. Cliquez sur ce champ et de les modifier (comment nous utilisons "MyFav").
7. Fermer la fenêtre propriétés.
8. Accédez à l'éditeur Visual Basic.
9. Examiner les feuilles dans le classeur que vous venez de modifier.
10. Observer que les Objets MicroSoft Excel affiche le nom que vous avez simplement changé "MyFav", et à la droite de qui, entre parenthèses, le nom de l'onglet de la feuille de calcul ("foo").
Vous pouvez changer la .Nom de code par programmation si vous préférez. J'utilise non-noms de Feuille de calcul pour faciliter mon modèle de manipulation.
Vous n'êtes pas obligé d'utiliser le générique par défaut de "Feuillex".
OriginalL'auteur BjH