È soltanto un Pokémon con le armi o è un qualcosa di più? Vieni a parlarne su Award & Oscar!
 
Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

[RISOLTO] MACRO INDIRIZZA MACRO AL FOGLIO

Ultimo Aggiornamento: 07/09/2017 16:50
Post: 1
Registrato il: 04/09/2017
Città: GENOVA
Età: 47
Utente Junior
Excel 2016 / 2011
OFFLINE
04/09/2017 11:57

ciao a tutto il Forum sono Elvis



Cari esperti e appassionati di vba spero che qualcuno di voi riesca a intravvedere una soluzione alla mia richiesta

Vorrei chiedervi :
è possibile realizzare una macro che indirizza una seconda macro facendola partire nel foglio assengato rendendolo di conseguenza
visibile ?

Nel file ho inserito una macro di esempio che al DoubleClick sulla cella A3 * del foglio macro * incrementa progressivamente di una unità visibile in cella A1 . Di seguito ho copiato il foglio e li ho numerati dal foglio 1 al foglio 5 più il foglio attivo * foglio macro * posizionato all’inizio che contiene la macro e l’elenco convalida

Funzionalità prevista :
al DoubleClick in A3 da qualsiasi foglio in cui mi trovo dovrebbe eseguire la macro solo nel foglio assegnato in cella C3 dove tramite un menù a convalida è possibile selezionare il nome del foglio .


In pratica se la macro funziona dovrebbe eseguire in questo modo :

se per esempio mi trovo su l foglio 1 e dalla cella C3 seleziono Foglio 4 al DoubleClick sulla cella A3 la macro dovrebbe agire nel foglio 4 e aprirlo


per verificare , se dovessi selezionare manualmente le linguette dei fogli in basso il foglio 4 dovrebbe contenere il valore in A1 più alto di tutti gli altri fogli

e così anche per tutti i fogli dove la macro ha agito per ultimo



un saluto a tutti
Elvis
Post: 1.594
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/09/2017 12:27

ciao
Questo quanto ho capito:
In un foglio qualsiasi, facendo doppio click in A3, deve essere incrementata la cella A1 del foglio selezionato in C3.

Se è così, devi utilizzare l'evento BeforeDoubleClick
in ThisWorkbook e pertanto cancellare quello del folgio macro che diventa inutile; questo un esempio:

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
fg = Range("C3")
Set wk = Worksheets(fg)
Application.EnableEvents = False
ind = Target.Address(RowAbsolute:=False, ColumnAbsolute:=False)
If ind = "A3" Then wk.Range("A1") = wk.Range("A1") + 1
Application.EnableEvents = True
Range("A1").Select
End Sub


Qualora dopo il doppio click volessi spostarti nel foglio selezionato dalla convalida, prima di:

Range("A1").Select

inserisci:

Worksheets(fg).select

Non ho capito:
"...se dovessi selezionare manualmente le linguette dei fogli in basso il foglio 4 dovrebbe contenere il valore in A1 più alto di tutti gli altri fogli ..."

Il foglio con il valore più alto sarà quello che hai incrementato più volte, perchè necessariamente il foglio 4 ??


saluti


[Modificato da dodo47 04/09/2017 12:35]
Domenico
Win 10 - Excel 2016
Post: 1
Registrato il: 04/09/2017
Città: GENOVA
Età: 47
Utente Junior
Excel 2016 / 2011
OFFLINE
04/09/2017 13:24

Grazie Domenico per la tua veloce risposta

Non è proprio come intendevo però mi hai fatto venire una buona idea....
Sapreste dirmi se è possibile realizzare una macro che al change della cella C3 collega direttamente al foglio selezionato, senza dover cliccare sulla cella A3 ?

In questo modo penso di riuscire a semplificare un po il tutto e spiegarmi meglio con un nuovo file

Un saluto a tutti
Elvis
Post: 1.596
Registrato il: 06/04/2013
Utente Veteran
2010
OFFLINE
04/09/2017 16:58

Re:
Elvis.77, 04/09/2017 13.24:

...una macro che al change della cella C3 collega direttamente al foglio selezionato, senza dover cliccare sulla cella A3 ?...



Ciao

se intendi che una volta selezionato il foglio dal menu a discesa ti "porta" nel foglio scelto, devi utilizzare l'evento change del foglio (oppure dei fogli) mirato alla cella C3.

Per intenderci (se deve valere per tutti i fogli), sempre in ThisWorkbook:

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Not Intersect(Target, Range("C3")) Is Nothing Then
    fg = Range("C3")
    Worksheets(fg).Select
End If
End Sub


Saluti






Domenico
Win 10 - Excel 2016
Post: 2
Registrato il: 04/09/2017
Città: GENOVA
Età: 47
Utente Junior
Excel 2016 / 2011
OFFLINE
07/09/2017 16:50

grazie dodo47 la macro funziona benissimo e mi è bastata per risolvere senza ulteriore file di esempio

di nuovo grazie
Elvis
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]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:39. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com