VBA dim ws que des feuilles de calcul (pas de feuille de calcul)
OK, donc, je sais que je peux le faire:
Dim ws as worksheet
Set ws = thisworkbook.worksheets("Sheet1")
et ensuite faire ma fantaisie avec la ws
objet de feuille de calcul
Je sais aussi que je peux Dim wss as worksheets
et que l'utilisation de worksheets("Sheet1")
renvoie l'objet de feuille de calcul. Alors pourquoi ne pas les travaux suivants?
Dim wss as worksheets
Dim ws as worksheet
Set wss = thisworkbook.worksheets
Set ws = wss("Sheet1")
J'ai aussi essayé:
Dim wss as worksheets
Dim ws as worksheet
Set ws = thisworkbook.wss("Sheet1")
mais ce dernier semble juste comme j'essaie de renommer/raccourcir "feuilles de travail", ce qui semble tout à fait tort. Je vais essayer d'obtenir les feuilles de calcul d'un classeur dans l'une des feuilles de calcul objet appelé wss. Ce n'est plus à essayer de comprendre le heirachy que tout, mais à des fins fonctionnelles que j'essaie de faire wss pour englober toutes les feuilles de calcul du classeur x si seulement je pouvais faire ws = wss(1)
au lieu de dire set ws = wb.worksheets(1)
Si, c'est possible ou suis-je malentendu feuilles/feuille de calcul de la relation?
J'ai eu un coup d'oeil à la membres de Feuilles et de Feuilles de travail et ils sont tous les deux la même chose. Le fichier d'aide, dit
Worksheets
retourne les feuilles de calcul de la collection, je crois qu'il serait bien car je ne suis pas intéressé dans les graphiques. J'ai juste voulu exploiter le classeur.les feuilles de calcul de la collection avec une feuille de travail de l'objet. Je pense que je suis absent quelque chose de simple donc pensé que je pourrais voir ce que ce forum a à offrir! Je vois les plus créatifs de code et/ou des explications simples sur ici (par rapport à la documentation officielle).La documentation est trompeuse. Si vous regardez la
Sheets
et Worksheets
propriétés vous verrez qu'ils reviennent tous les deux un Sheets
objet.OK, d'où la confusion. Je n'ai pas très bien pourquoi
Worksheets
serait de retour d'un Sheets
de la collection au lieu de seulement un Worksheets
collection. Merci pour la clarification.C'est un
Sheets
collection de Worksheets
seulement. Je pense que j'en ai eu assez de VBA pour aujourd'hui 😀OriginalL'auteur jamheadart | 2016-09-24
Vous devez vous connecter pour publier un commentaire.
vous devez déclarer
wss
comme un Feuilles objetc'est parce que Les feuilles de calcul propriété de
Workbook
objet renvoie uneSheets
collection, c'est à dire une collection qui contient à la foisWorksheets
etCharts
objet du classeurSi vous avez besoin d'une collection de
Workbook
Worksheets
uniquement (pasCharts
) d'être appelé, comme ws = wss(1) ou les goûts, alors vous pourriez adopter la solution de contournement suivante avecCollection
objetSet wss = ThisWorkbook.Sheets
retour d'unSheets
de la collection, mais si vous neSet wss = ThisWorkbook.Worksheets
qui renvoie également unSheets
collection?Non, ce serait une défaillance de cession depuis que par modèle Objet d'Excel
Worksheets
propriété deWorkbook
objet renvoie uneSheets
collection. AinsiSet wss = ThisWorkbook.Worksheets
résultats dans untype mismatch error
Génial et merci à vous pour l'édition mise à jour avec la fonction. Les gars, vous rock.
vous êtes les bienvenus
Vous n'avez pas besoin d'une fonction spéciale pour obtenir une collection de feuilles de calcul.
Dim wss As Sheets
etSet wss = ThisWorkbook.Worksheets
renvoie une collection Sheets objet qui ne contient que les feuilles de calcul (et pas des graphiques ou des feuilles de macro). Et vous pouvez utiliserDebug.Print wss(1).Name
par exemple.OriginalL'auteur user3598756