Condividi tramite

Evidenziare riga colorandola

Anonimo
2014-12-26T17:23:00+00:00

Ciao a tutti,

Chiedo il vostro aiuto per avere la possibilità di accelerare e di ridurre il rischio di commettere errori l'inserimento dei dati nelle varie celle. Nella colonna A a partire dalla riga 2 vengono inseriti dei nominativi. Dalla colonna B alla colonna H vengono riportati dei valori numerici. Quello che chiedo è: c'è la possibilità di evidenziare la sola riga dove inserisco i valori colorandola ad esempio di giallo? Ad esempio se per caso vado ad inserire i valori alla riga 300, si deve colorare da A300:H300. Nel momento in cui finisco di inserire i valori e mi sposto ritorna normale. Spero di aver reso chiaro quello che si trova nella mia mente. Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

  1. Anonimo
    2014-12-26T18:31:12+00:00

    Ciao Geacs,

    Piu' robusta sarebbe la seguente versione:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        Dim Rng As Range, Rng2 As Range

        Const myCols As String = "A:H"

        Set Rng = Me.Range(myCols)

        Set Rng2 = Intersect(Rng, Target.Cells(1).EntireRow)

        With Rng

            .Interior.ColorIndex = xlNone

            If Target.Column <= .Columns(.Columns.Count).Column Then

                If Target.Row > 1 Then

                    Rng2.Interior.ColorIndex = 6

                End If

            End If

        End With

    End Sub

    '<<=========

    Come alternativa, vedi anche l'addin RowLiner di Chip Pearson:

    http://www.cpearson.com/excel/rowliner.htm

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento

6 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2014-12-27T01:09:02+00:00

    Ciao Geacs,

    Il codice precedente funziona su tutti i fogli della cartella di lavoro e utilizza l'intervallo A:H su ogni foglio.

    Per operare su fogli specifici e per definire diversi intervalli di interesse per ciascun foglio, sostituisci il codice proposto con la seguente versione:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

        Dim arrFogli As Variant, arrColonne As Variant

        Dim Res As Variant

        Dim Rng As Range, Rng2 As Range

        Const sFogli As String = "Foglio1,Foglio2,Foglio6"             '<<==== Modifica

        Const sColonne As String = "A:H,A:C,A:M"                           '<<==== Modifica

        Const iColor As Long = 6   '\ Giallo

        arrFogli = Split(sFogli, ",")

        arrColonne = Split(sColonne, ",")

        Res = Application.Match(Sh.Name, arrFogli, 0)

        If Not IsError(Res) Then

            Set Rng = Sh.Range(arrColonne(Res - 1))

            Set Rng2 = Intersect(Rng, Target.Cells(1).EntireRow)

            With Rng

                .Interior.ColorIndex = xlNone

                If Target.Column <= .Columns(.Columns.Count).Column Then

                    If Target.Row > 1 Then

                        Rng2.Interior.ColorIndex = iColor

                    End If

                End If

            End With

        End If

    End Sub

    '<<=========

    Nota che l'ordine delle colonne specificate per ogni foglio nella  costante sColonne deve corrispondere con l'ordine dei nomi dei fogli elencati nella  costante sFogli.

    Nota, inoltre, che non ci devono essere spazi dopo le virgole nelle due costanti sColonne e Sfogli.

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2014-12-26T22:28:27+00:00

    Ciao Geacs

    Era quello che mi serviva. Prima di concludere, visto che ci siamo capiti subito, se dovessi mettere il codice nel  Workbook perché voglio che intervenga su diversi e specifici fogli, come lo modifico? 

    Cancella il codice nel modulo di codice del foglio e incolla il seguente codice nel modulo ThisWorkbook:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

        Dim Rng As Range, Rng2 As Range

        Const myCols As String = "A:H"

        Set Rng = Sh.Range(myCols)

        Set Rng2 = Intersect(Rng, Target.Cells(1).EntireRow)

        With Rng

            .Interior.ColorIndex = xlNone

            If Target.Column <= .Columns(.Columns.Count).Column Then

                If Target.Row > 1 Then

                    Rng2.Interior.ColorIndex = 6

                End If

            End If

        End With

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2014-12-26T20:56:55+00:00

    Grande Norman

    Era quello che mi serviva. Prima di concludere, visto che ci siamo capiti subito, se dovessi mettere il codice nel  Workbook perché voglio che intervenga su diversi e specifici fogli, come lo modifico? Grazie

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2014-12-26T18:07:06+00:00

    Ciao Geacs,

    Chiedo il vostro aiuto per avere la possibilità di accelerare e di ridurre il rischio di commettere errori l'inserimento dei dati nelle varie celle. Nella colonna A a partire dalla riga 2 vengono inseriti dei nominativi. Dalla colonna B alla colonna H vengono riportati dei valori numerici. Quello che chiedo è: c'è la possibilità di evidenziare la sola riga dove inserisco i valori colorandola ad esempio di giallo? Ad esempio se per caso vado ad inserire i valori alla riga 300, si deve colorare da A300:H300. Nel momento in cui finisco di inserire i valori e mi sposto ritorna normale. Spero di aver reso chiaro quello che si trova nella mia mente. Grazie. 

    Fai clic sulla lingetta del foglio interessato, seleziona l'opzione Visualizza Codicee incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)

        Dim Rng As Range, Rng2 As Range

        Const myCols As String = "A:H"                                             '<<==== Modifica

        Set Rng = Me.Range(myCols)

        Set Rng2 = Intersect(Rng, Target.Cells(1).EntireRow)

        With Rng

            If Target.Column <= .Columns(.Columns.Count).Column Then

                .Interior.ColorIndex = xlNone

                If Target.Row > 1 Then

                    Rng2.Interior.ColorIndex = 6

                End If

            End If

        End With

    End Sub

    '<<=========

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento