Per elaborare, diciamo che ho due intervalli nominati nella mia cartella di lavoro. Entrambi gli intervalli denominati hanno lo stesso nome (diciamo "myName"), ma uno è limitato a Sheet1 e l'altro è ambito alla cartella di lavoro.Ottieni un intervallo denominato per stringa nella cartella di lavoro di Excel quando il nome è duplicato
Dato un nome (stringa) dell'intervallo denominato, desidero accedere all'intervallo denominato livello di cartella di lavoro.
Se utilizzo la chiamata nativa: wb.Names.Item("myName")
, restituisce l'intervallo denominato ambito.
Se invece lo faccio: wb.Names.Item("Sheet1!myName")
, restituisce ovviamente l'intervallo del nome dell'ambito del foglio. Ho scoperto che posso usarlo per specificare quelli specifici per il foglio, ma non per quello di una cartella di lavoro.
Esiste comunque la possibilità di specificare la cartella di lavoro con scope?
La mia soluzione alternativa sta attualmente eseguendo l'iterazione nell'elenco di tutti i nomi e il confronto della proprietà .Name per acquisire l'ambito denominato Intervallo di lavoro. Funziona perché la proprietà .Name aggiunge un "Foglio1!" all'intervallo denominato ambito. Questo è comunque molto costoso da fare, e voglio evitarlo.
Non è chiaro al 100% per me come si sta utilizzando il gamma. Se si sta tentando di impostare un oggetto range su una stringa nome allora 'Set rng1 = Range (" myName ")' restituirà l'intervallo dal nome del foglio locale se * sheet1 è attivo * altrimenti restituirà l'intervallo dal nome della cartella di lavoro . Penso che questa sia la soluzione più pulita, ovvero test che il foglio attivo sia diverso dal foglio che ospita il nome locale prima di cercare di usare il nome come ambito della cartella di lavoro. Ha senso? :) – brettdj
è anche possibile confrontare il parent.name con il nome della cartella di lavoro, ma è comunque necessario scorrere i nomi per estrarre tale raccolta. – nutsch
re: @ commento di brettdj. a seconda di cosa stai cercando di ottenere, il più semplice potrebbe essere semplicemente aggiungere un foglio temporaneo all'inizio della tua macro, da eliminare alla fine del tuo codice. – nutsch