Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Ricerca foglio tramite variabile

Ultimo Aggiornamento: 10/05/2020 10:22
08/05/2020 12:12

Ciao a tutti, per evitare questa riga
For Each ws In ActiveWorkbook.Worksheets oppure il +6
Se non ricordo male, c'era un'altro modo per definire un foglio. Ex
Ho 31 fogli rinominati 1,2,3, ecc ecc,31. Altri 6 con nome vari (potrebbero aumentare)
For Y = 1 To 31
Set ws = Sheets(Y) ' se metto +6 mi funziona, mà preferirei non usarlo
MsgBox (ws.cells(1,1)
Next Y
Grazie mille
Post: 2.790
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
08/05/2020 12:32

ciao
se è come l'hai detto e non ci sono altri fogli il cui nome è un numero, potresti fare:

For y = 1 To Sheets.Count
If IsNumeric(Sheets(y).Name) Then
....

saluti



Domenico
Win 10 - Excel 2016
08/05/2020 18:44

Grazie, anche se non mi piace...
n = Sheets.Count - 31
For Y = 1 To 31
Set ws = Sheets(Y + n)
Gli ho detto che se inserisce nuovi fogli di metterli a sinistra degli ultimi 31
Post: 5.912
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
09/05/2020 08:27

Seleziona fogli
Ciao, la soluzione di Domenico che Saluto è quella migliore anche se non la condivido troppo, in quanto cercare un foglio è sempre bene farlo in modo nominativo, con il nome in una cella o una variabile o matrice, e non basato sull'indice.

in quanto se qualcuno sposta il foglio di posizione non hai più la corrispondenza e potrebbe causare problemi, sia nella scrittura che nel cancellamento dati.

Ciao By Sal [SM=x423051]

[Modificato da by sal 09/05/2020 08:31]
se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
09/05/2020 13:40

Grazie by sal
Ci stavo ripensando stanotte e ho capito il problema (Y è numerico).
Alla fine ho fatto con CStr(Y) e funziona
For Y = 1 To 31
Nome = CStr(Y)
Set ws = Sheets(Nome)
ws.Select
Next Y
Post: 2.798
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
09/05/2020 17:35

e se i giorni/fogli sono 28...29...30, il loop ti va in errore

saluti




[Modificato da dodo47 09/05/2020 17:35]
Domenico
Win 10 - Excel 2016
09/05/2020 20:04

Scusami dodo47, ma non capisco cosa desideri dire
A me sembra che funzioni bene
Post: 2.799
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
09/05/2020 21:33

Ciao
ricordo bene di cosa si parla......

Il documento è composto da n fogli ciascuno chiamato con il numero dei giorni del mese, cioè se il documento è aprile, è composto da 30 fogli, chiamati 1,2,3....30 (lasciamo perdere i vari riepiloghi)

Quando quel loop cerca di assegnare a WS il valore di "sheets(31)", poichè il foglio "31" non esiste, va in errore. (Per non parlare di febbraio)

Spero di aver chiarito cosa volevo dire.

cari saluti




Domenico
Win 10 - Excel 2016
09/05/2020 23:56

Ok capito, hai ragione mà gli ho detto di lasciare sempre i 31 fogli
Inoltre conoscendo anche il mese, il VBA calcola i giorni presenti nel mese.
Pertanto è diventato For y = 1 to (tot giorni) e non più 31
Post: 2.800
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
10/05/2020 10:22

Re:
ABCDEF@Excel, 09/05/2020 23:56:

..... mà gli ho detto di lasciare sempre i 31 fogli
Inoltre conoscendo anche il mese, il VBA calcola i giorni presenti nel mese.
Pertanto è diventato For y = 1 to (tot giorni) e non più 31




Mai fidarsi degli utenti (dovresti saperlo).

A parte questo, devi accertarti che l'utente quando crea il documento, lo faccia con tutti i fogli di tutti i giorni, esempio: crea aprile con dentro 30 fogli (a parte i vari di appoggio), non con dentro 10 fogli "tanto ancora c'è tempo per il giorno 11".

saluti



Domenico
Win 10 - Excel 2016
Vota:
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]
Ricerca nomi doppi su colonne. (6 messaggi, agg.: 16/01/2018 23:37)
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 15:03. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com