[Chiuso] Ricerca cella in base a colore e contenuto

Stato
Chiusa ad ulteriori risposte.

VICHI25

Nuovo utente
10 Gennaio 2021
7
1
EXCEL 2016
0
E' la prima volta che posto. Sono un principiante di excel. Ho provato a cercare sul forum ma non ho trovato. Devo creare dei fogli di lavoro dove in ogni foglio è presente il palinsesto di alcune lezioni. Ogni foglio rappresenta una settimana di lezioni. Devo gestire le presenze e le assenze degli allievi e vorrei farlo in maniera automatica. Ho pensato di creare una funzione che cerchi in tutti i fogli le celle con un determinato nome e colore. La differenza di colore sta ad indicare l'assenza o la presenza. Non so come creare il ciclo che scorra tutte le celle attive per ogni foglio.
 

VICHI25

Nuovo utente
10 Gennaio 2021
7
1
EXCEL 2016
0
questo e' un esempio di foglio nel quale inserisco i nomi degli allievi. Di questi fogli ne ho circa 12, uno per settimana.
In un altro foglio ho due colonne (allievo, assenze), io vorrei richiamare una funzione che aggiorna le celle della colonna assenze se l'allievo corrispondente e' diventato rosso nel planning che ho allegato
 

Allegati

VICHI25

Nuovo utente
10 Gennaio 2021
7
1
EXCEL 2016
0
Sono riuscito a creare la funzione che fa tutto. Il problema è che non so come far fare l'aggiornamento automatico quando cambio il contenuto delle celle, per esempio cambio il colore
 

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
33.750
1.845
67
Napoli
2019 Pro Plus
980
Riallega il file compilandolo con dati non sensibili e inserisci a mano il risultato che vuoi ottenere.
 

VICHI25

Nuovo utente
10 Gennaio 2021
7
1
EXCEL 2016
0
Ti posto il codice, e' solo una prova. Gli faccio stampare alla fine 2 per prova. vorrei capire se l'IF e' corretto.
Nella cella A2 del foglio di indice 4 e' presente lo stesso nome (con sfondo rosso) che c'e' nella cella A2 di PRESENZE CORSISTI, non capisco perchè non entra nell'if

Visual Basic:
Function contaPrAs(name As String, cellRefColor As Range) As Long
    Dim indRefColor As Long
    Dim cellaCorrente As Range
    Dim cntRes As Long
    Dim nm As String
    Dim rng As Range
    Dim I As Integer
    Dim str1 As String
  
    indRefColor = 3 ' cellRefColor.Cells(1, 1).Interior.Color
        WS_Count = ActiveWorkbook.Worksheets.Count
        MsgBox "chiamata funzione"
       
      
        'MsgBox ActiveWorkbook.name 'nome cartella di lavoro (nome file)
  
        Set rng = Worksheets("PRESENZE CORSISTI").Range("A1:A23")
        For C = 2 To 23
            cntRes = 0
            nm = Worksheets("PRESENZE CORSISTI").Range("A" & CStr(C)).Value
          
            For I = 4 To WS_Count
   
                  str1 = Worksheets(I).name   'foglio numero I da analizzare
                  MsgBox str1
                  Set rng = Worksheets(str1).Range("A1:A2")  ' devo settare tutto il range del foglio
                
                  For Each cellaCorrente In rng
                          'MsgBox cellaCorrente.Value
                          'MsgBox nm
                          'MsgBox cellaCorrente.Interior.ColorIndex
                          If indRefColor = cellaCorrente.Interior.ColorIndex And nm = cellaCorrente.Value Then
                                    'SE IL CORSISTA E' ROSSO AGGIORNO LA SUA CASELLA ASSENZE
                                    cntRes = cntRes + 1
                                    Worksheets("PRESENZE CORSISTI").Range("G" & CStr(C)).Value = cntRes
                                   'MsgBox Worksheets("PRESENZE CORSISTI").Range("F" & CStr(C))
                                  MsgBox "IF"
                          End If
                  Next cellaCorrente
            Next I
        Next C
        contaPrAs = 2
End Function
 
Ultima modifica di un moderatore:

alfrimpa

VBA Expert
Supermoderatore
18 Dicembre 2015
33.750
1.845
67
Napoli
2019 Pro Plus
980
Ma il file che hai allegato al post 3 è quello che stai usando tu?

A me non pare proprio.
 

VICHI25

Nuovo utente
10 Gennaio 2021
7
1
EXCEL 2016
0
No, ho fatto modifiche. Il codice che ti ho inviato va bene ma sbaglio a riempire le celle all'interno dell'istruzione IF
questa :
Worksheets("PRESENZE CORSISTI").Range("G" & CStr(C)).Value = cntRes
non gli piace. Cosa sbaglio?
 
Stato
Chiusa ad ulteriori risposte.

Sostieni ForumExcel

Aiutaci a sostenere le spese e a mantenere online la community attraverso una libera donazione!