2009-09-08 8 views
3

Un de mes amis travaille comme analyste pour une compagnie d'assurance et utilise Visual Basic pour Applications (VBA) pour écrire des scripts.Manière indépendante de la langue de faire référence à "Feuille"?

Depuis que sa société a des bureaux dans différents pays européens, elle doit rendre les scripts aussi indépendants que possible du langage. Un problème récemment apparu est de savoir comment gérer les documents Excel et se référer à des feuilles (par exemple Sheet1, Sheet2) sans avoir à traduire ce terme dans les principales langues européennes.

Est-ce que quelqu'un sait si Excel fournit une liste de constantes qu'elle pourrait utiliser pour accéder à différentes informations quelle que soit la version localisée de Windows/Excel?

Merci.

+0

je crois que vous pouvez vous référer à des feuilles par index plutôt que par nom. –

+0

@Cory - corrigez-moi si je me trompe, mais l'index de la feuille ne change-t-il pas en fonction de l'endroit où il se trouve dans l'ordre d'affichage? – warren

+0

Oui, ce sera le cas, ce qui peut ne pas être une solution réalisable pour vous, mais au moins, vous n'aurez pas à vous soucier des langues. –

Répondre

4

Vous ne devez jamais utiliser de noms de feuilles de calcul codés en dur pour les désigner dans VBA.

Dim s As Worksheet 

For Each s In ActiveWorkbook.Sheets 
    DoSomethingWith s 
Next s 

ou

Set s = ActiveSheet 
DoSomethingWith s 

ou

Set s = ActiveWorkbook.Sheets.Add() 
DoSomethingWith s 

ou

Dim i As Long 

With ActiveWorkbook.Sheets 
    For i = 1 To .Count 
    DoSomethingWith .Item(i) 
    Next i 
End With 

Dans les références cellulaires Cependant, en utilisant les noms de feuilles réels est inévitable. Ces références pourraient être construites à la demande de VBA. Les références existantes (dans les fonctions de la cellule) sont mises à jour automatiquement par Excel.

+0

Merci à tous. – Gulbahar

+0

Excepté le cas où vous devez saisir une référence à une feuille spécifique, n'est-ce pas? Si vous utilisez l'ordinal, c'est aussi volatile que le nom, n'est-ce pas? J'ai fait pas mal de VBA par le passé mais il faut admettre que ça fait un moment, je fais seulement des trucs sporadiques maintenant. Existe-t-il une «meilleure pratique» acceptée pour cela? –

+0

Je pense qu'à un moment donné, cela doit être conventionnel. Si vous souhaitez faire référence à une feuille spécifique à partir du code, vous devrez peut-être verrouiller le classeur par rapport aux modifications pour rendre le code robuste. – Tomalak

0

Dans l'éditeur VBA, vous pouvez renommer des objets de feuille de calcul; ceci est totalement séparé du nom de la feuille de calcul affiché sur l'onglet en bas de l'écran.

je les renomme quelque chose comme wksData et wksSummary, et utiliser le code comme

wksSummary.Range("A1").Value = "abc" 

Les utilisateurs peuvent renommer les feuilles de travail comme ils le souhaitent, mais la référence VBA reste le même.

Le nom de la feuille de calcul peut être récupéré, comme dans l'exemple ci-dessous:

MsgBox wksSummary.Name 
Questions connexes