Condividi:        

Macro su più fogli di lavoro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Macro su più fogli di lavoro

Postdi cornflakeboy » 04/10/13 15:31

Salve,
avrei il seguente problema:
Ho registrato una macro, con relativo pulsante, su un foglio di lavoro (chiamiamolo "Foglio1"). Ora vorrei estendere la stessa macro, con relativo pulsante, anche sui fogli successivi. In buona sostanza deve cambiare solo l'intestazione del foglio sul quale vado agire.
Qui di sotto è la macro. Il foglio che varia di volta in volta è "1aGiornata" che poi diventa "2aGiornata" e così via.
Grazie a chiunque mi risponderà

Codice: Seleziona tutto
 Range("AE1:AK9").Select
    Selection.Copy
    Range("AE13").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("1aGiornata").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("1aGiornata").Sort.SortFields.Add Key:=Range( _
        "AF14:AF21"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("1aGiornata").Sort.SortFields.Add Key:=Range( _
        "AJ14:AJ21"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("1aGiornata").Sort
        .SetRange Range("AE13:AK21")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AA15").Select
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Sponsor
 

Re: Macro su più fogli di lavoro

Postdi scossa » 04/10/13 18:49

cornflakeboy ha scritto:Qui di sotto è la macro. ....
Range("AE1:AK9").Select
......
Range("AA15").Select


Una macro comincia con Sub xyz() e finisce con End Sub ......
Bye!
scossa

Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)
Avatar utente
scossa
Utente Senior
 
Post: 427
Iscritto il: 01/04/12 16:40
Località: Provincia di Verona

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 04/10/13 18:53

Ciao cornflakeboy, benvenuto nel forum.
Quindi tu vorresti creare su Foglio1 numerosi pulsanti, ognuno che lavori su un foglio diverso?

Supponiamo che il pulsante inserito sia prelevato dai "Controlli Modulo". Cambia la scritta di ogni pulsante in modo che essa rappresenti il nome del foglio; quindi avrai un pulsante con la scritta "1aGiornata", uno con "2aGiornata", etc.
In testa alla macro aggiungi la riga
mySh = Application.Caller

Poi sostituisci tutte le occorrenze di ActiveWorkbook.Worksheets("1aGiornata") con ActiveWorkbook.Worksheets(mySh)

Prova e fai sapere

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 07/10/13 12:08

Ciao Anthony,
innanzitutto grazie.
Tralasciando la questione dei pulsanti, sulla quale forse mi sono spiegato male, ho provato a inserire nella macro la riga che mi hai consigliato e a fare le dovute sostituzioni.
Mi dà questo errore:
Errore di run time '9'
Indice non incluso nell'intervallo.
In sostanza quel che fa la macro, prima di interrompersi per quest'errore, è copiare la classifica ma senza ordinarla.
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 08/10/13 01:21

Come detto, l' uso di mySh = Application.Caller e Worksheets(mySh) consente di lavorare sul foglio di lavoro il cui nome corrisponda alla scritta inserita sopra il Pulsante; se invece ottieni l' errore "Indice non incluso nell'intervallo" significa che un foglio con quel nome non esiste.
Devi quindi controllare come hai utilizzato il suggerimento.
E se non risolvi dovresti allegare un file esemplificativo su cui ottieni l' errore; dovresti anche chiarire "la questione dei pulsanti, sulla quale forse [ti sei] spiegato male"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 08/10/13 08:32

La macro è la seguente:
Codice: Seleziona tutto
Sub Classifica()


    mySh = Application.Caller
    Range("AE1:AK9").Select
    Selection.Copy
    Range("AE13").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets(mySh).Sort.SortFields.Clear
    ActiveWorkbook.Worksheets(mySh).Sort.SortFields.Add Key:=Range( _
        "AF14:AF21"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets(mySh).Sort.SortFields.Add Key:=Range( _
        "AJ14:AJ21"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets(mySh).Sort
        .SetRange Range("AE13:AK21")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("AA15").Select
   
 
End Sub


Poi ho creato un pulsante con una forma rettangolare al cui interno ho scritto 1aGiornata. Ho cliccato sopra e mi restituisce errore runtime 9 mentre il codice si blocca copiando la classifica ma senza ordinarla.
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 08/10/13 14:14

Il solo codice macro che hai elencato non consente di capire come hai applicato il suggerimento; non per nulla avevo detto
E se non risolvi dovresti allegare un file esemplificativo su cui ottieni l' errore; dovresti anche chiarire "la questione dei pulsanti, sulla quale forse [ti sei] spiegato male"


Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 08/10/13 14:42

Ok...potresti dirmi come allegare il file excel in questione?
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 08/10/13 15:26

https://www.dropbox.com/sh/efaw66i09p85db3/m-9-Zh0POg

qui dovresti trovare il file in questione. Sono diversi fogli ma quelli su cui dovrei far variare la macro sono 1agiornata, 2agiornata e così via. La macro si chiama classifica.
grazie in ogni caso.
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 08/10/13 23:22

Non hai mai chiarito "la questione dei pulsanti, sulla quale forse [ti sei] spiegato male", pero' nel file allegato ognuno dei fogli 1aGiornata, 2aGiornata etc contiene un suo pulsante associato alla macro "Classifica"; quindi immagino che il problema e' come far eseguire sul foglio attivo la stessa macro "Classifica".
Per questo l' uso di mySh = Application.Caller e' inutile.
O lasci la macro come e', con la sola modifica di mySh = Application.Caller in mySh = ActiveSheet.Name
Oppure sostituisci tutte le occorrenze di ActiveWorkbook.Worksheets(mySh) con ActiveSheet

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 09/10/13 08:33

Ciao,
forse c'è qualcosa che mi sfugge:
ho provato in entrambi i modi e, se per il primo foglio la macro funziona, per quelli successivi invece mi scombina tutti i punteggi.
Dov'è l'inghippo?

Circa i pulsanti, nessun punto più da chiarire. Credo possa andare bene associare un pulsante ad ogni foglio.

Inoltre, pensi sia possibile avere una macro che su un foglio mi riporti la classifica aggiornata all'ultimo foglio Giornata? Ossia, se per esempio l'ultimo foglio disponibile è 7aGiornata vorrei che su un altro foglio (denominato per es. classifica) sia riportata la classifica della 7aGiornata. Quando poi l'ultima giornata disponibile diventa 8aGiornata, vorrei che venisse riportata l'ottava e così via...

Grazie ancora
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 09/10/13 10:55

Ciao,
ho un altro problema che non riesco davvero a spiegarmi.
Nel file che ho allegato, in ogni pagina di Giornata, ci sono delle caselle in grigio in cui sono scritti dei moduli (ES. 343, 352 ecc.). Questi moduli li avevo creati selezionandoli da un menu a tendina riferito al foglio "Moduli". Non capisco perché ogni volta che chiudo il file excel, questo menù a tendina non mi viene salvato (cosa che invece mi fa se lo creo in un nuovo foglio di lavoro).

* aggiornamento

trovato l inghippo. non mi convalida i menu a tendina che fanno riferimento ad altri fogli.
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 09/10/13 11:56

Circa i pulsanti, nessun punto più da chiarire. Credo possa andare bene associare un pulsante ad ogni foglio
Se e' chiaro a te, va bene cosi'.

Quanto al risultato della macro, noto che i valori in colonna Classifica vengono correttamente ordinati per valore crescente su tutti i fogli, quindi l' operazione e' riuscita; anche se la classifica non rispecchia piu' i risultati, quindi il paziente e' morto... un classico.
Questo succede perche' la macro contiene un Copia-Icolla che mette nell' area da ordinare delle formule, che sono corrette nell' area AE1:AK9 ma nella posizione AE13:AK21 sono sballate (puntano al "foglio precedente", a delle celle che dopo l' ordinamento del "foglio precedente" non corrispondono piu' alla stessa squadra), e quindi danno un risultato sballato, che viene correttamente ordinato (nel senso che si mettono in corretta sequenza i punteggi sballati).
Per evitare questo basta che il Copia-Incolla diventi un Copia - Incolla speciale /valori + formati; per questo devi sostituire le righe

Range("AE1:AK9").Select
Selection.Copy
Range("AE13").Select
ActiveSheet.Paste

con
Range("AE1:AK9").Copy
Range("AE13").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("AE13").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False


Quanto alla possibilita' di avere automaticamente sul foglio Classifica la classifica dell' ultima giornata disponibile:
-hai gia' un foglio Classifica, formattato alla vigliacca: elimina tutte le celle unite e le attuali formattazioni
-quando inserisci le nuove "giornate" inseriscile alla sinistra del foglio Classifica (guardando la posizione dei Nomi fogli, nella parte inferiore della finestra excel)
-tasto dx sul tab col nome "Classifica", scegli Visualizza codice; inserisci questo codice nel frame di destra:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
    Sheets(Sheets("Classifica").Index - 1).Range("AE13:AK21").Copy Destination:=Range("C4")
    Application.CutCopyMode = False
End Sub

In questo modo, tutte le volte che "entri" nel foglio Classifica, il suo contenuto sara' aggiornato prelevandolo dal foglio "precedente" nell' area AE13:AK21 e inserendolo in C4 e adiacenti.
Formatta il resto del foglio come ti piace.
Volendo puoi copiare solo i "valori", usando il Copia - Incolla speciale /valori, con la stessa tecnica adottata nella macro Cassifica, sopra; questo ti consentira' di formattare a piacere anche la tabella classifica, purche' eviti accuratamente l' uso delle celle unite.

Quanto alla convalida non mantenuta nelle celle in grigio (es A4), non so come procedi; ma se io inserisco in A4 una convalida su Elenco con un intervallo (da creare) su Moduli!A1:A7, salvo, chiudo e riapro, allora la convalida e' sempre lì, come deve essere.
Quindi bisognerebbe guardare il tuo modo di operare sui fogli.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 09/10/13 15:48

Ora funziona tutto. sei stato chiarissimo e di grandissimo aiuto.
Grazie mille!
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 10/10/13 10:19

Ciao
avrei un piccolo upgrade da fare e rientrano in gioco i pulsanti...
Vorrei creare un foglio come sorta di homepage in cui cliccando sul pulsante vieni rimandato al foglio desiderato.
Per i fogli denominati "classifica" o "calendario" è semplice.
Per i fogli denominati "1aGiornata", "2aGiornata" ecc... invece, vorrei che la macro faccia in modo di visualizzare su una casella del foglio homepage il numero della giornata desiderata e una volta inserito, rimandarmi al foglio corrispondente...e non lo so fare....help!
tks
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 10/10/13 12:03

Quindi tu invece di cliccare sul tab col nome del foglio vorresti selezionare una cella, scriverci la giornata, prendere il mouse, selezionare un pulsante e cliccarci sopra? Io non collaboro...
Facciamo cosi':
-se il tab della giornata e' visibile in fondo alla finestra excel, lo clicchi e la risolvi
-se non e' visibile, tasto dx sui simboli a sx del primo tab col nome foglio (sono tasti in stile "registratore"); clicchi sul nome del foglio che cerchi, e la risolvi.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro su più fogli di lavoro

Postdi cornflakeboy » 10/10/13 13:10

La motivazione era dovuta al fatto che, adesso, con poche giornate, digitare sul tab è diretto. Poi quando le giornate saranno venti, o trenta, i fogli saranno molti e bisognerà scrollare verso destra per trovare quello desiderato. Poi perché avevo fatto una cosa pseudoestetica, come si vede dal file che ho allegato.
Però, in effetti, posso comprendere il tuo rifiuto. :-)
cornflakeboy
Utente Junior
 
Post: 10
Iscritto il: 27/09/13 14:20

Re: Macro su più fogli di lavoro

Postdi Anthony47 » 10/10/13 14:11

Con la procedura che ti ho dato non e' necessario scrollare verso destra (ne' verso sinistra)...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea


Torna a Applicazioni Office Windows


Topic correlati a "Macro su più fogli di lavoro":


Chi c’è in linea

Visitano il forum: Nessuno e 39 ospiti