Excel: formattazione celle condizionata con vba

  • Creatore Discussione Creatore Discussione stiui85
  • Data di inizio Data di inizio

stiui85

Nuovo Utente
24 Gen 2010
1
0
0
Ciao a tutti io ho questo problema da risolvere.

In pratica nella scheda 2 di un file excel ho questi numeri messi in riga:
3 (vuoto) 40 50 (vuoto) (vuoto) 14 31

40 ha uno sfondo arancione.

Nella scheda 1 mi servirebbe che ogni cella facesse questo lavoro:
controlla la cella corrispondente nella scheda 2.
Se questa non ha sfondo arancione o viola allora procede.
A questo punto verifica che lei faccia parte dei 3 numeri più alti della riga della scheda 2 (esclusi gli arancioni e i viola) e se lo è, si colora di uno sfondo blu e copia il valore dalla cella corrispondente nella scheda 2.

Ho iniziato ad usare questo codice praticamente ieri, quindi nel codice che ho provato a scrivere qui sotto potrei aver scritto cose allucinanti :)
(la spiegazione sopra è un esempio, il codice che poi dovrò fare sarà generalizzato, ovvero non saranno 3 i numeri più alti, ma sarà un numero variabile diff).

Se qualcuno riuscisse a darmi una mano, gli sarei veramente grato! Grazie!!

Function Classifica(InRange As Range, Uguale As Range, Differenza As Range, WhatColorIndex As Integer, WhatColorIndex2 As Integer) As Double




Dim Rng As Range
Dim OK As Boolean
Dim OK2 As Boolean
Dim Valore As Integer
Dim i As Integer
Dim ciao As Integer
Dim diff As Integer

Application.Volatile True
diff = Differenza.Value

OK = (Uguale.Interior.ColorIndex = WhatColorIndex)
OK2 = (Uguale.Interior.ColorIndex = WhatColorIndex2)

If OK Or OK2 Then
OK = OK
Else
Valore = Uguale.Value
i = 0
For Each Rng In InRange.Cells
If OK Or OK2 Then
OK = OK
Else
If Valore < Rng.Value Then
i = i + 1
End If
End If
Next Rng
If i < diff Then
ActiveCell.Value = Uguale.Value
ActiveCell.Interior.ColorIndex = 37
End If
End If

End Function
 

Discussioni simili