Evidenzia riga di una tabella
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Questa macro consente di selezionare l'intera riga di una tabella in cui è presente la cella selezionata. E sufficiente definire la tabella o il nome dell'intervallo di celle e la procedura funzionerà senza altre impostazioni; da notare che il formato delle celle non verrà modificato.
Il risultato del codice qui sotto e quello che potete vedere di lato e testare nel file di esempio; nell'esempio è presente sia una tabella che un intervallo di celle.
Nel codice è interessante vedere 3 cose:
  1. Il formato è impostato attraverso la formattazione condizionale, in questo modo la formattazione originale, anche se esistono altre regole di formattazione condizionale come nell'esempio, non viene modificata;
  2. la prima verifica è se la cella è contenuta in una tabella attraverso la scansione della collection ListObject;
  3. in alternativa viene verificato se la cella fa parte di un intervallo definito, in questo caso attraverso l'analisi dell'oggetto ActiveWorkbook.Names, filtrando solo gli intervalli del foglio attivo.

l'esempio completo é scaricabile da questo link: Es453.xlsm (a questo link le info per attivare le macro se risultano bloccate)

Il codice della macro:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  Set Fa = ActiveSheet
  Set TabA = Nothing
      
  '--- cancella le formattazioni precedenti ---
  For Each Fc In Cells.FormatConditions
    If (Fc.Type = xlExpression) Then
      If (Fc.Formula1 = "=111=111") Then
        Fc.Delete
      End If
    End If
  Next Fc
  
  '--- verifica se la selezione è contenuta in una tabella ---
  If (Fa.ListObjects().Count > 0) Then
    For Each T In Fa.ListObjects
      If (T.Active) Then
        Set TabA = T.DataBodyRange
      End If
    Next T
  End If

  '--- verifica se la selezione è contenuta in un intervallo definito ---
  If (TabA Is Nothing) Then
    For Each T In ActiveWorkbook.Names
      tName = Mid(T.Value, 2, InStr(T.Value, "!") - 2)
      If (Fa.Name = tName) Then
        Set tRange = Range(T.Value)
        If Not (Application.Intersect(Target, tRange) Is Nothing) Then
          Set TabA = tRange
        End If
      End If
    Next T
  End If
  
  '--- Imposta il formato ---
  If Not (TabA Is Nothing) Then
    Set Riga = Fa.Range(Fa.Cells(Target.Row, TabA.Column), Fa.Cells(Target.Row, TabA.Column + TabA.Columns.Count - 1))
    
    Riga.FormatConditions.Add Type:=xlExpression, Formula1:="=111=111"
    Nr = Riga.FormatConditions.Count
    Riga.FormatConditions(Nr).SetFirstPriority
    Riga.FormatConditions(1).Interior.Color = RGB(255, 255, 153)
    Riga.FormatConditions(1).StopIfTrue = False
  End If
End Sub



Gli esempi contenuti nel sito sono per uso personale, non é consentito l'uso professionale, commerciale o la riproduzione senza autorizzazione.
Per dubbi o domande potete scriverci a domande@macrofacili.it, sulla nostra pagina FB MacroFacili.it o sul gruppo FB Excel, macro e formule.
 

data4idea srls - PIva 01881000937 - info@data4idea.it