› Sviluppare funzionalita su Microsoft Office con VBA › Macro al passaggio tra fogli
-
AutoreArticoli
-
Salve a tutti,
E' possibile far attivare una macro quando si passa da un foglio all'altro di una cartella di lavoro?
Spiego meglio, un file con più fogli vorrei che quando passo da un foglio all'altro si attivasse una macro senza premere tasti.
So che è possibile farlo all'apertura del file tramite il workbook ma mi chiedevo se era possibile non all'apertura file ma all'attivarsi del foglio.
grazie a tutti per l'aiuto
Puoi intervenire nell'evento Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Vedi esempio che ti allego così ti fai un'idea. Passa da un foglio all'altro.
Allegati:
You must be logged in to view attached files.Ciao Alex,
ho visto il tuo file ed ho strutturato in questo modo:
Modulo 10:
option explicit Sub filtrivoucher() With Worksheets("voucher") .Range("$A$5:$D$71").AutoFilter Field:=4, Criteria1:="<>" End With End Sub Sub filtrivoucherweek() With Worksheets("voucher weekend") .Range("$A$5:$D$69").AutoFilter Field:=4, Criteria1:="<>" End With End Sub Sub filtrioutputweek() With Worksheets("output weekend") .Range("$A$5:$D$68").AutoFilter Field:=4, Criteria1:="<>" End With End Sub Sub filtrioutput() With Worksheets("output") .Range("$A$5:$D$70").AutoFilter Field:=4, Criteria1:="<>" End With End Submentre nel workbook ho messo questo:
option explicit Private Sub Workbook_SheetActivate1(ByVal Sh As Object) filtrivoucher End Sub Private Sub Workbook_SheetActivate2(ByVal Sh As Object) filtrivoucherweek End Sub Private Sub Workbook_SheetActivate3(ByVal Sh As Object) filtrioutput End Sub Private Sub Workbook_SheetActivate4(ByVal Sh As Object) filtrioutputweek End Subpero quando passo da un foglio all'altro non mi si attivano i filtri richiesti. Nel senso essendo questi fogli collegati tutti al foglio input se io cambio qualcosa nel foglio input gli altri fogli non si aggiornano ed attivando i filtri manualmente si nascondono le celle vuote e rimane solo tutto quello che c'è nell'input.
Insomma, quando io faccio modifiche sul foglio input entro in uno di questi fogli attivo manualmente il tasto filtro sulle colonne e lui mi elimina tutte le celle vuote. Volevo automatizzare questo passaggio con un filtro automatico al passaggio dei fogli ma non so perchè non va.
Allego file se può servire ma ho l'impressione che dipenda dai filtri più che da come ho scritto il codice
grazie mille
Allegati:
You must be logged in to view attached files.Private Sub Workbook_SheetActivate1(ByVal Sh As Object) filtrivoucherEnd Sub
Non esiste l'evento Workbook_SheetActivate1 2 3 ma solo Workbook_SheetActivate().
Senza entrare nel merito del resto del codice (Criteria1:="<>" da che??):
Private Sub Workbook_SheetActivate(ByVal Sh As Object) With Sh If .Name = "Voucher" Then .Range("$A$5:$D$71").AutoFilter Field:=4, Criteria1:="<>" ElseIf .Name = "Voucher Weekend" Then .Range("$A$5:$D$69").AutoFilter Field:=4, Criteria1:="<>" ElseIf .Name = "Output WeekEnd" Then .Range("$A$5:$D$68").AutoFilter Field:=4, Criteria1:="<>" ElseIf .Name = "Output" Then .Range("$A$5:$D$70").AutoFilter Field:=4, Criteria1:="<>" End If End With End SubPrivate Sub Workbook_SheetActivate1(ByVal Sh As Object)
Cosa sono qui numeri dopo Activate? Li hai messi tu? Ora non posso soffermarmi sulla richiesta d'intervento specifica, ma l'evento Private Sub Workbook_SheetActivate(ByVal Sh As Object), quindi senza alcun numero dopo Activate, serve a far riflettere sull'intera cartella di lavoro il codice che metti al suo interno. Infatti se vedi la Sub inizia proprio con Workbook_....(cioè cartella di lavoro).
Cmq domani se riesco leggero meglio la tua richiesta.
ma che danno che sono, grazie scossa, ero convinto di doverla far variare per ogni foglio.
Vabbè si impara sempre qualcosa, ora funziona naturalmente.
Grazie anche ad alex sempre tempestivi e mi avete aiutato tanto, non posso che ringraziare.
-
AutoreArticoli
