Ma tu hai scritto in una unica macro sia il codice di Foglio1 che quello di Foglio2; mentre io ti avevo suggerito di enucleare il codice dalla macro di Worksheet_BeforeDoubleClick; cioe' passare da
- Codice: Seleziona tutto
Sub Worksheet_BeforeDoubleClick(foglio1)
Codice1
Codice2
Codice3
End Sub
- Codice: Seleziona tutto
Sub Worksheet_BeforeDoubleClick(foglio2)
Codice111
Codice222
Codice333
End Sub
a:
1) In un modulo standard
- Codice: Seleziona tutto
Sub MacroFoglio1
Codice1
Codiece2
Codice3
End Sub
- Codice: Seleziona tutto
Sub MacroFoglio2
Codice111
Codiece222
Codice333
End Sub
Poi, nel modulo di Foglio1
- Codice: Seleziona tutto
Sub Worksheet_BeforeDoubleClick (Foglio1)
Call MacroFoglio1
End Sub
Nel modulo di Foglio2
- Codice: Seleziona tutto
Sub Worksheet_BeforeDoubleClick (Foglio2)
Call MacroFoglio2
End Sub
Ovviamente questo ti avrebbe consentito agevolmente di modificare anche in
- Codice: Seleziona tutto
Sub Worksheet_BeforeDoubleClick (Foglio1)
Call MacroFoglio1
Call MacroFoglio2
End Sub
Che e' quello che vorresti.
Tuttavia1 c' e' da tener presente che le due MacroFoglio1 e MacroFoglio2 devono indirizzare esplicitamente Foglio1 e Foglio2: infatti non essendo piu' eseguito nel "modulo del relativo foglio" il loro riferimento di default sara' al foglio attivo, che non puo' essere contemporaneamente Foglio1 e Foglio2, ne' io consigliero' di modificare le selezione nel corso di una macro di evento (BeforeDoubleClick).
Tuttavia2 c' e' anche notare che tutto quell' elenco di operazioni forse possono essere ridotte a un loop di 6 istruzioni, ottenendo quindi (da inserire in un Modulo Standard)
- Codice: Seleziona tutto
Sub MacroFoglio1()
With Sheets("Foglio1")
For I=0 to 9
For J=0 to1
If .Range("C3").offset(I,J) = .Range("C55").offset(I,0) Then
.Range("C3").offset(I,J).Interior.ColorIndex = 4
.Range("A101").offset(I,J) = 1
Else: .Range("A101").offset(I,J) = 0
.Range("C3").offset(I,J).Interior.ColorIndex = 0
End If
Next J
Next I
End With
End Sub
- Codice: Seleziona tutto
Sub MacroFoglio2()
With Sheets("Foglio2")
For I=0 to 9
For J=0 to1
If .Range("C3").offset(I,J) = .Range("C55").offset(I,0) Then
.Range("C3").offset(I,J).Interior.ColorIndex = 4
.Range("A101").offset(I,J) = 1
Else: .Range("A101").offset(I,J) = 0
.Range("C3").offset(I,J).Interior.ColorIndex = 0
End If
Next J
Next I
End With
End Sub
(rinuncio volutamente a trasformare tutto in una unica sub parametrizzata)
Non garantisco della bonta' della logica, che deriva dalla mia comprensione a una sguardo non attentissimo al contenuto delle due macro, cosa che in genere proprio non faccio (reputo una perdita di tempo anadare a decodificare una macro per capire che cosa l' utente vuole fare); insomma il collaudo e' tutto da fare, sempre dopo aver fatto le canoniche due copie di backup dei tuoi dati.
A questo punto devi solo inserire le macro di BeforeDoubleClick
- Codice: Seleziona tutto
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Call MacroFoglio1
Call MacroFoglio2
'Cancel = true '<<< Vedi Testo
End Sub
L' istruzione marcata <<< e' adesso disabilitata; se togli l' apostrofo iniziale, evitera' che alla fine della macro si entri in Edit della cella su cui hai fatto doppioclick, che e' invece l' operazione standard; vedi tu se inserirla o lasciarla disabilitata.
Ciao