Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

cella interruttore dipendente da range

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

cella interruttore dipendente da range

Postdi romeos » 03/01/15 12:27

ho un frammento di codice ricavato con il costro aiuto, che per anni ha svolto egregiamente il suo compito, ma che necessariamente devo implementare,il problema concreto e che il codice mi effettua una sorta di interruttore con "ON" la cella che seleziono e rimandadomi a "OFF" sulla cella D14
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Dim CheckArea1 As String
  Dim CheckArea2 As String
  Dim CheckArea3 As String
  Dim bTarget As Boolean
CheckArea1 = "c2,c4,c6,c8,c10"
CheckArea2 = "c12,c14,c16,c18,c20"
CheckArea3 = "c24,c26,c28,c30,c32"
 
 With Target
    If .Cells.Count > 1 Then Exit Sub

  If Not Application.Intersect(Target, Range(CheckArea1)) Is Nothing Then
     If ActiveCell.Interior.ColorIndex = 3 Then
           .Font.ColorIndex = 1
        ActiveCell.Interior.ColorIndex = xlNone
      Else
        ActiveCell.Interior.ColorIndex = 3
        .Font.ColorIndex = 2
      End If
      bTarget = True
      End If
   
 

  If Not Application.Intersect(Target, Range(CheckArea2)) Is Nothing Then
     
      If ActiveCell.Interior.ColorIndex = 5 Then
           .Font.ColorIndex = 1
        ActiveCell.Interior.ColorIndex = xlNone
      Else
        ActiveCell.Interior.ColorIndex = 5
        .Font.ColorIndex = 2
     
      End If
      bTarget = True
      End If
     
      If Not Application.Intersect(Target, Range(CheckArea3)) Is Nothing Then
     If ActiveCell.Interior.ColorIndex = 8 Then
           .Font.ColorIndex = 1
        ActiveCell.Interior.ColorIndex = xlNone
      Else
        ActiveCell.Interior.ColorIndex = 8
        .Font.ColorIndex = 2
      End If
      bTarget = True
      End If
     
    If bTarget Then
      Application.EnableEvents = False
    Me.Range("D15").Select  'oppure  .Offset(0, 1).Select
      Application.EnableEvents = True
    End If
  End With
End Sub

ora avrei la necessita che "OFF" mi rimandi ad una cella differente, univoca, per ogni colore per esempio CheckArea1 "D6",CheckArea2 "D15",CheckArea3 "D28".Grazie in anticipo per l'aiuto e l'attenzione che vorrete offrirmi.
"Lo spirito è un pendolo,tra la resa e il coraggio"
EXCEL 2010
romeos
Utente Junior
 
Post: 49
Iscritto il: 11/12/12 13:14

Sponsor
 

Re: cella interruttore dipendente da range

Postdi Anthony47 » 03/01/15 19:52

Non mi sono "applicato" piu' di tanto per capire cosa fa la macro pubblicata, ma penso che per ottenere quello che cerchi dovresti inserire in ognuno dei 4 If Not Application.Intersect etc etc una istruzione che individua il target incrociato; es:
Codice: Seleziona tutto
      End If
      bTarget = True
      myCell="D6"   'ipotesi CheckArea1
      End If

Poi userai il contenuto di myCell per decidere cosa fare; purtroppo non ho capito la storia dell' On e dell' Off, quindi se non risolvi con lo spunto devi provare a essere piu' dettagliato, senza aspettarti (almeno per quel che mi riguarda) che si vada a decodificare la macro per chiarirsi le idee...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cella interruttore dipendente da range

Postdi romeos » 03/01/15 21:10

innanzitutto ti ringrazio dell'attenzione,la macro riguarda un elenco di nominativi che singolarmente evidenzio con un clic (con un click del mouse la cella cambia colore e mi seleziona un altra cella) la macro questo lo fa in modo egregio, il problema è che avendo un elenco di diversi nominativi la selezione di una cella univoca mi fa scorrere il foglio e mi costringe ogni volta ha fare lo scroll per ritornare sul nominativo.
per quanto riguarda la storia dell'ON e OFF (cosi definito da me) riguarda il fatto che selezionando una cella del range questa cambia colore e seleziona un altra cella permettendomi così eventualmente di ricliccarci sopra una volta avuto un riscontro e ritornare ad avere colore bianco, in tal modo agendo come un "interruttore" appunto. Purtroppo, vista la mia pochezza in VBA,quello che sono riuscito a fare con il tuo suggerimento e di avere delle celle che cambiano colore ma non con l'effetto interruttore infatti se voglio ritornare sul colore bianco devo prima selezionare un'altra cella. Non so se sono stato più esauriente,mi auguro di si.
Grazie comunque per l'aiuto Anthony.
"Lo spirito è un pendolo,tra la resa e il coraggio"
EXCEL 2010
romeos
Utente Junior
 
Post: 49
Iscritto il: 11/12/12 13:14

Re: cella interruttore dipendente da range

Postdi ricky53 » 04/01/15 02:28

Ciao,
prova con l'evento "Doppio Click"
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: cella interruttore dipendente da range

Postdi Anthony47 » 04/01/15 03:14

il problema è che avendo un elenco di diversi nominativi la selezione di una cella univoca mi fa scorrere il foglio e mi costringe ogni volta ha fare lo scroll per ritornare sul nominativo.
Hum... navigo a vista, come disse il comandante del Titanic...
Se la selezione fissa della cella D15 ti da fastidio, allora opta per la soluzione alternativa gia' suggerita dal codice che usi: cioe' invece di Me.Range("D15").Select usa
.Offset(0, 1).Select

Questo in alternativa al suggerimento di Ricky (vedi sopra)

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: cella interruttore dipendente da range

Postdi romeos » 04/01/15 15:59

Ho risolto con .Offset(1, 0).Select modificando un po la struttura del foglio e lo scarto che mi restituiva, grazie Anthony47 e ricky53 per il vostro fondamentale aiuto.
"Lo spirito è un pendolo,tra la resa e il coraggio"
EXCEL 2010
romeos
Utente Junior
 
Post: 49
Iscritto il: 11/12/12 13:14


Torna a Applicazioni Office Windows


Topic correlati a "cella interruttore dipendente da range":


Chi c’è in linea

Visitano il forum: patel e 9 ospiti