Stellar Blade Un'esclusiva PS5 che sta facendo discutere per l'eccessiva bellezza della protagonista. Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

I fogli di excel hanno già una loro numerazione intrinseca?

Ultimo Aggiornamento: 20/09/2022 14:52
Post: 174
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
12/09/2022 14:22

Buongiorno a tutto il forum, mi chiedo se i fogli di un file excel, una volta creati, presentano intrinsecamente già una numerazione che li distingue gli uni dagli altri (oltre al nome dato al foglio). Per esempio, su di un codice VBA di un file excel di un mio collega leggo:
Sheet1.Range("A27:DX" & Rows.Count).ClearContents


So però anche che se questo foglio lo chiamassi "pippo" potrei eseguire tale istruzione anche con
sheets("pippo").Range("A27:DX" & Rows.Count).ClearContents


Ve lo chiedo però perché ho notato che se, per esempio, aggiungessi un foglio nuovo e cancellassi il foglio vecchio (su cui si eseguiva il codice), nel file ci sarà sempre un foglio solo ma l'istruzione non verrà eseguita.
Grazie
Post: 2.683
Registrato il: 10/10/2013
Città: VICENZA
Età: 69
Utente Veteran
365
OFFLINE
12/09/2022 14:39

ciao

prova a guardare nell'editor vba

trovi
Foglio1 (Foglio1)

se scrivo

sheets("pippo")
faccio riferimento al nome che io ho imposto al foglio
che può essere qualsiasi

Foglio1 (Pippo)
Foglio7 (Pippo)
Foglio5 (Pippo)

se scrivo
Foglio1

faccio riferimento non più al nome ma al numero del foglio

perciò se elimino il foglio1
la macro non darà risultati perchè non lo trova
Post: 174
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
12/09/2022 15:26

Buon pomeriggio Federico, grazie per il tuo interesse.
So che mi toccherà andare a sostituire manualmente, nel codice, allo sheet1 il nome del foglio sostitutivo.
Nel caso del codice su cui sto lavorando, questo lavora su di un foglio chiamato "DATA" ma che nel codice viene indicato come sheet1
La mia curiosità quindi è questa: quando aggiungo un nuovo foglio, excel lo numererà da sé?
Se, dopo aver cancellato un certo numero di fogli in un file excel, ne aggiungo un altro, questo nuovo foglio aggiunto per excel
sarà sheet5, o sheet6 o sheet7, etc?
grazie


Post: 175
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
12/09/2022 15:37

Immaginavo che il foglio "DATA" fosse un eventuale sheet4 ma non è così🧐
Post: 6.961
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
12/09/2022 16:12

Ciao Melissa Excel in automatico chiama progressivamente i fogli Foglio1-2-3-4, etc.., ma è aleatorio il nome dato da excel infatti se elimini il "Foglio4" e crei un nuovo foglio lo chiamerà "Foglio5" non 4, però se chiudi il file e lo riapri e crei un nuovo foglio allora il foglio creato lo chiamerà "Foglio4", per il contatore interno si accorge che il Foglio4 manca.

ma devi considerare ancora un altra cosa i fogli hanno anche un indice, se tu scrivi nel VBA Sheets(1) fa riferimento alla prima linguetta dei fogli anche se il foglio in prima posizione si chiama pippo, però questo può creare confusione perche se tu sposti il foglio pippo in seconda posizione, allora il Sheets(1) non sarà più pippo ma quello che ha preso il suo posto.

quindi a parer mio la miglior cosa da fare, almeno io cosi faccio è creare una piccola macro con i nomi dei fogli dichiarando delle variabili pubbliche per i fogli, esempio

Option Explicit
Public Sh1 As Worksheet, Sh2 As Worksheet, Sh3 As Worksheet, Sh4 As Worksheet

Sub SetFg()
Set Sh1 = Worksheets("Ricerche")
Set Sh2 = Worksheets("Archivio")
Set Sh3 = Worksheets("Ricerche2")
End Sub


ed assegnando ad ogni variabile il nome del foglio , come vedi ne sono 4 fino ad sh4, ma ne ho dichiarato solo 3, quindi io so che il foglio ricerche si chiama "sh1" e cosi di seguito.

fatto questo all'inizio di una nuova macro scrivo

sub Macro1()
dichiarazioni delle variabili che interessano, poi

Setfg 'richiamo la macro con tutti i nomi dei fogli

a questo punto ho dichiarato tutte le variabili dei fogli e li ho disponibili tutti per selezionarli con

sh1.Activate ' mi riferisco al foglio ricerche

oppure trasferire o copiare dati con

sh1.range("A1:B100").copy sh2.Range("H100") ' copiando i dati dal foglio ricerche al foglio archivio

anche assegnare valori del tipo

nome = sh1.range("B2")

lo stesso con cells

nome = sh1.cells(2, 2)

end sub


non importa a questo punto il foglio dove si trova, ed anche se cambi nome al foglio non devi fare altro che andare nella Macro "SetFg" e sostituire il nome ricerche con quello nuovo e di colpo senza cambiare niente altro sh1 conterrà il nuovo nome assegnato senza cambiare singolarmente il nome in tutte le macro.

non so se può esserti stata utile, questa piccola dissertazione

Ciao By Sal (8-D

[Modificato da by sal 12/09/2022 16:19]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 3.346
Registrato il: 06/04/2013
Utente Master
2010
OFFLINE
12/09/2022 16:26

ciao
fossi in te farei riferimento ai nomi da te assegnati ai vari fogli.

I motivi sono diversi, il più importante è quello che hai una lettura mnemonica del foglio cui fai riferimento, (ma ce ne sono altri, per esempio se sposti un foglio etc etc.

Per quanto riguarda:

"....Se, dopo aver cancellato un certo numero di fogli in un file excel, ne aggiungo un altro, questo nuovo foglio aggiunto per excel
sarà sheet5, o sheet6 o sheet7, etc?...."


dipende, in quanto se per esempio hai tre fogli e senza salvare cancelli il terzo, excel ti crea il foglio4, se invece salvi, chiudi e riapri, ti creerà il foglio3

saluti
Domenico
Win 10 - Excel 2016
Post: 176
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
12/09/2022 17:32

Grazie By Sal e Domenico, un grazie mille anche a voi per essere intervenuti!
Sono quindi portata a pensare che sia stato poco lungimirante il creatore del codice poiché non ha pensato che qualcuno
potesse sostituire il foglio originale con uno nuovo: così facendo mi obbliga ad intervenire manualmente nella modifica del codice, per esempio, realizzando un'integrazione seguendo il chiarissimo consiglio di By Sal.
Se nel codice avesse più semplicemente fatto riferimento al nome del foglio non avrei avuto problemi poiché il foglio sostitutivo l'ho realizzato usandone uno identico.
Per tutti i codici che scrivo, infatti, faccio sempre riferimento al nome del foglio per le istruzioni come mi avete sempre insegnato.
Questa volte purtroppo mi sono trovata davanti ad un codice complesso e lungo con questi riferimenti scomodi.
Grazie a tutti per la vostra sempre cortese disponibilità
Post: 6.962
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
12/09/2022 17:44

Ciao Melissa a questo punto, ti conviene usare Trova/Sostituisci dell'editor del VBA. il binocolo

esempio in trova scrivi Sheets("Foglio1") ed in sostituisci scrivi sheets("Pippo") e fai la ricerca non fare "Sostituisci tutto" potrebbe sostituirti qualcosa che non vuoi, quindi lo fai trovando il successivo e poi nel caso sostituisci.

Ciao By Sal (8-D
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 177
Registrato il: 03/09/2018
Città: GROTTAGLIE
Età: 25
Utente Junior
Microsoft Office Professional Plus 2019 64 bit
OFFLINE
12/09/2022 20:16

Ed anche oggi ho imparato qualcosa di nuovo ed utilissimo.
By Sal, non ci avevo mai pensato allo strumento del binocolo nell'editor del VBA e trova/sostituisci, ne ignoravo l'esistenza 😯.
Wow, mi hai insegnato uno strumento che d'ora in avanti mi faciliterà ogni modifica di codici.
Grazie 🎁
Post: 53
Registrato il: 18/10/2016
Città: COSENZA
Età: 65
Utente Junior
Excel 2007
OFFLINE
20/09/2022 14:52

La scelta migliore è dare un nome ai fogli, e quindi identificarli nel codice VBA con il loro nome
Set shtxxx=sheets("foglio")
In questo modo, se elimino il foglio, e ne creo uno nuovo, basta rinominarlo "foglio", e il codice funziona sempre....
Vota: 15MediaObject5,00410 4
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 05:34. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com