Allora cerchero di essere più specifico la riga che va in errore è questa me la sottolinea di giallo e mi dice indice non incluso nell'intervallo
- Codice: Seleziona tutto
ActiveSheet.Shapes(Sheets(Scrath).Range("a" & j).Value & Sheets(Scrath).Range("b" & k).Value & Sheets(Scrath).Range("d" & i).Value).Visible = False
Se pero io modifico l'istruzione in:
- Codice: Seleziona tutto
ActiveSheet.Shapes(Range("a" & j).Value & Range("b" & k).Value & Range("d" & i).Value).Visible = False
tutto funziona perfettamente pero devo copiare le celle che mi interessano nel foglio principale dove c'è la macro e non in un altro foglio come vorrei.
Praticamente l'immagine è composta da 3 nomi(es. "5-4-1Bayern moncoHome")nelle celle a (dalla 100 alla 106 ci sono tutti e 7 i moduli,nella cella b dalla 100 alla 107 gli 8 noi delle squadre,e nella cella d dalla 100 alla 103 ci sono il tipo di maglia)io combinando il contenuto delle 3 celle vado ad attivare o disattivare un gruppo d'immagini piuttosto che un altro! ma ripeto se le celle di riferimento sono nello stesso foglio della macro va tutto perfettamente è quando io devo andare a prendere il riferimento da un altro foglio che nasce il problema...credo che sia il Scheets(scratch) prima dei range a dare il problema.
Potrei anche fare le immagini una a una ma sono veramente tante e quindi cancellarle tutte diventa lunghe invece con il ciclo for con poco me la cavo!
La macro è all'interno del worksheet di tipo change...il codice completo è questo:
- Codice: Seleziona tutto
Private Sub worksheet_Change(ByVal Target As Range)
If Target.Address = "$L$4" Or Target.Address = "$O$4" Or Target.Address = "$B$3" Then
'Nascondo tutti i moduli
ActiveSheet.Shapes("P").Visible = False
For j = 1000 To 1006
ActiveSheet.Shapes(Range("a" & j).Value).Visible = False
Next j
'Cancello tutte le maglie
' Maglie giocatori
For i = 1000 To 1007
For j = 1000 To 1006
For k = 1000 To 1003
ActiveSheet.Shapes(Sheets(Scrath).Range("a" & j).Value & Sheets(Scrath).Range("b" & k).Value & Sheets(Scrath).Range("d" & i).Value).Visible = False
Next k
Next j
Next i
' Maglie portieri
For i = 1000 To 1007
For k = 1000 To 1003
ActiveSheet.Shapes("P" & Range("b" & k).Value & Range("d" & i).Value).Visible = False
Next k
Next i
'Rendo visibile il modulo desiderato
If Range("L4") <> "" Then ActiveSheet.Shapes(Range("L4").Value).Visible = True
'Rendo visibile il Portiere
ActiveSheet.Shapes("P").Visible = True
'Rendo visibile le maglie desiderate
If Range("L4") <> "" Then ActiveSheet.Shapes(Range("L4").Value & Range("O4").Value & Range("B3").Value).Visible = True
'Rendo visibile la maglia Portiere desiderata
If Range("L4") <> "" Then ActiveSheet.Shapes("P" & Range("O4").Value & Range("B3").Value).Visible = True
End If
Grazie per l'aiuto