macro risaltare riga e colonna



  • macro risaltare riga e colonna
    di jack&john (utente non iscritto) data: 17/12/2015 10:10:44

    ho creato una macro per risaltare riga e colonna dove si è posizionati con il mouse (utile nelle taelle con abbastanza dati). ll problema è che mi colora tutto il fglio di nero. Allego file di esempio.
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    'Step 1: Declare Variables
    Dim strRange As String
    'Step 2:Build the range string
    strRange = Target.Cells.Address & ", " & _
    Target.Cells.EntireColumn.Address & ", " & _
    Target.Cells.EntireRow.Address
    'Step 3: Pass the range string
    Range(strRange).Select
    End Sub
    



  • di jack&john (utente non iscritto) data: 17/12/2015 10:13:58

    avrei anche un'altra proposta pero quest'ultima mi cambia il colore delle altre celle comprese le intestazioni della tabella...
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    On Error Resume Next
    
    Cells.Interior.ColorIndex = 0
    Target.EntireRow.Interior.ColorIndex = 42
    
    End Sub



  • di Mister_x (utente non iscritto) data: 17/12/2015 11:16:19

    ciao

    altra possibilita'

    ciao
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Cells.Interior.ColorIndex = xlNone
      ActiveCell.EntireRow.Interior.ColorIndex = 6
      ActiveCell.EntireColumn.Interior.ColorIndex = 6
    End Sub
    






  • di Mister_x (utente non iscritto) data: 17/12/2015 11:33:45

    ciao

    altra soluzione trovata nelle mie scartoffie
    mette un righello sotto alla cella selezionata ma non modifica nessun valore delle celle, colore e altro

    ciao
     
    Sub Worksheet_SelectionChange(ByVal Target As Range)
    NewTarget = Target.Address
    If OldTarget = NewTarget Then Exit Sub
    Dim altezza As Long  ''Altezza cella o Riga
    On Error Resume Next
        ActiveSheet.Shapes.Range(Array("Righello")).Select
        Selection.Delete
     altezza = Selection.RowHeight ''Rilevamento Altezza cella o Riga
        ActiveSheet.Shapes.AddConnector(msoConnectorStraight, 5, 0, 1000, 0).Select  '850
        Selection.ShapeRange.Name = "Righello"
        Selection.Name = "Righello"
        Selection.Cut
        Riga = Target.Row
        ActiveSheet.Paste
        With Selection.ShapeRange.Line
            .Visible = msoTrue
            .Weight = 5  ''Spessore linea
            .ForeColor.SchemeColor = 10  ''colore linea
            '''.PrintObject = False
        End With
        Selection.ShapeRange.IncrementLeft -5000
        Selection.ShapeRange.IncrementTop altezza + 5 ''Incremento dello spostameto linea angolo top cella
        Target.Select
        OldTarget = NewTarget
    End Sub
    
    
    
    






  • di jack&john (utente non iscritto) data: 17/12/2015 11:54:25

    grazie mille mr x pero mi piacerebbe di piu poter rislatare solamente la riga (senza colonna) e senza che mi cambi il colore per lo meno delle intestazioni delle varie colone. si puo fare?



  • di Mister_x (utente non iscritto) data: 17/12/2015 12:04:09

    ciao

    prova la seconda soluzione

    ciao





  • di jack&john (utente non iscritto) data: 17/12/2015 12:48:05

    grazie mr x pero preferirei mantenere una delle mie proposte ovviando ai problemini che mi danno.
    non c'è modo di limitarlo e di saltare solamente la prima riga (dove ho le intestazioni colorate della tabella)?



  • di Mister_x (utente non iscritto) data: 17/12/2015 13:04:55

    ciao

    definire con Range()

    ciao
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Range("A2:Z1000").Interior.ColorIndex = xlNone
      Range(Cells(Target.Row, "A"), Cells(Target.Row, "Z")).Interior.ColorIndex = 6
      Range(Cells(2, Target.Column), Cells(1000, Target.Column)).Interior.ColorIndex = 6
    End Sub
    






  • di jack&john (utente non iscritto) data: 17/12/2015 13:24:35

    mr x finalmente ho deciso.

    vorrei usare la macro che riporto qui sotto. attualmente funziona col doppio click. non c'è modo di farla funzionare semplicemente selezionando una cella qualsiasi?
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
     'Step 1: Declare Variables
     Dim strRange As String
     'Step 2:Build the range string
     strRange = Target.Cells.Address & ", " & _
     Target.Cells.EntireColumn.Address & ", " & _
     Target.Cells.EntireRow.Address
     'Step 3: Pass the range string
     Range(strRange).Select
     End Sub



  • di jack&john (utente non iscritto) data: 17/12/2015 13:27:19

    allego file "esempio2"



  • di BS (utente non iscritto) data: 17/12/2015 15:22:14

    ciao
    prova ad inserire questo
    dovrebbe essere quello che cerchi
    l'ho trovata facendo una ricerca per un'altra mia applicazione
    ciao
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim A1, R1, C1
    If Target.Count > 1 Then
    ActiveCell.Select
    Exit Sub
    End If
    A1 = Target.Address(0, 0)
    R1 = Target.Row
    C1 = Replace(A1, R1, "")
    Application.EnableEvents = False
    Range(R1 & ":" & R1 & "," & C1 & ":" & C1).Select
    Range(Intersect(Range(R1 & ":" & R1), Range(C1 & ":" & C1)).Address).Activate
    Application.EnableEvents = True
    End Sub
    



  • di Albatros54 data: 17/12/2015 16:03:39

    Prova il codice sotto
    Ciao
    albatros54
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim wi As Window
    Set wi = ActiveWindow
    Cells.Interior.ColorIndex = xlNone
    Target.Interior.ColorIndex = 8
    
    For i = wi.VisibleRange.Rows(1).Row To Target.Row - 1
    Cells(i, Target.Column).Interior.ColorIndex = 36
    Next i
    For i = wi.VisibleRange.Columns(1).Column To Target.Column - 1
    Cells(Target.Row, i).Interior.ColorIndex = 36
    Next i
    
    End Sub
    






  • di Mister_x (utente non iscritto) data: 17/12/2015 16:10:41

    ciao

    METODO DA SPARARSI UN COLPO

    mi rivolgo anche a BS
    non avete provato le conseguenze ad adottare questo metodo
    Prova semplice
    attivate questa sub() e dopo andate su quel bel tastino che si chiama ( canc o del ) e con il vostro ditino provate a confermare
    a voi le conseguenze e ai posteri l'ardua sentenza

    ciao







  • di Mister_x (utente non iscritto) data: 17/12/2015 16:20:52

    riciao

    PS nella mia avevo dimenticato il controllo alla riga 1 inserito

    riciao
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Row = 1 Then Exit Sub
      Range("A2:Z1000").Interior.ColorIndex = xlNone
      Range(Cells(Target.Row, "A"), Cells(Target.Row, "Z")).Interior.ColorIndex = 6
      Range(Cells(2, Target.Column), Cells(1000, Target.Column)).Interior.ColorIndex = 6
    End Sub
    






  • di Marius44 data: 17/12/2015 16:43:06

    Non mi ricordo più se ho trovato in rete ovvero se l'ho fatto io (comunque, se è di qualcuno si faccia avanti).
    Prova questa macro e dimmi come ti pare.
    Ciao a tutti,
    Mario
     
    Private Sub Worksheet_SelectionChange(ByVal Obiettivo As Range)
        Dim Indirizzo, Riga, Colonna
        If Obiettivo.Count > 1 Then Exit Sub
        Indirizzo = Obiettivo.Address(0, 0)
        Riga = Obiettivo.Row
        Colonna = Replace(Indirizzo, Riga, "")
        'Application.EnableEvents = False
        Range(Riga & ":" & Riga & "," & Colonna & ":" & Colonna).Select
        Range(Intersect(Range(Riga & ":" & Riga), Range(Colonna & ":" & Colonna)).Address).Activate
        'Application.EnableEvents = True
    End Sub



  • di jack&john (utente non iscritto) data: 17/12/2015 17:13:36

    marius la tua soluzione è quella che fa per me.
    nel caso in cui volessi evidenziare solamente la riga e non piu la colonna, come si dovrebbe modificare la macro?



  • di Mister_x (utente non iscritto) data: 17/12/2015 17:34:29

    ciao

    ciao anche a te Mario
    ripeto sempre quello che ho scritto prima
    se attivate la riga e la colonna
    ( purtroppo su qualsiasi tastiera ESISTE quel piccolissimo tasto in altro a destra denominato
    CANC o DEL ) a meno che prendete un piccolo cacciavite e lo eliminate??????????
    ripeto e mi ripeto se fossi io ad usare quel file e mi capita una cosa cosi , le maledizioni che manderei a chi a programmato , non vi dico quali sono ma lascio a voi intenderle

    PS per il nostro amico , io adotterei il sistema dello Shapes in quanto dici nel tuo ultimo di non attivare la colonna, e se ho anche celle colorate questi non ha nessuna influenza essendo una forma

    ciao ciao





  • di Marius44 data: 17/12/2015 20:44:37

    @mister_X
    Ciao,
    ovviamente mi astengo dal provare viste ... le paventate conseguenze.
    Mi chiedo, però, oltre a metterci sul chi va là non potresti dirci a quale disastro andremmo incontro, magari per sommi capi ma tanto per farci capire.

    Mi astengo, altresì, dal suggerire all'utente come fare circa la sua ultima domanda.

    Aspetto tue nuove.
    Ciao,
    Mario



  • di Mister_x (utente non iscritto) data: 17/12/2015 23:42:25

    ciao Mario

    sono appena rientrato e ho visto il tuo intervento
    la cosa e' molto semplice da provare
    prendi un foglio e riempi un po di celle con dei varlori
    fai partire la sub() posizionandoti in mezzo a questi valori
    adesso prova a sciacciare il tasto Canc o del e vedi cosa succede
    immagina questo su un file di primanota o altro, dove ai moltissimi record cosa ti potrebbe succedere a questo punto
    quanti dati andranno persi?????

    ciao





  • di Raffaele_53 data: 18/12/2015 04:32:13

    Che Marius44, abbia selezionato riga e colonna. OK come per il tasto CANC
    Il quesito rimane,l'utente cosa vuole fare?
    Cancellare riga/colonna? Colorarle? Oppure solo cancellare/colorare la cella prescelta?
    Mancherebbe solo un IF per fare il tutto.



  • di Marius44 data: 18/12/2015 07:58:17

    In effetti Mister_X ha ragione: in un foglio di primanota ....
    Ho ripensato il tutto e, limitando l'area da colorare (non l'intera riga e colonna) anche se si preme Canc ancella solo il dato in quella cella.

    Ciao a tutti,
    Mario
     
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rowNumberValue As Integer, columnNumberValue As Integer, i As Integer, j As Integer
        If Not Intersect(Target, Range("$A$7:$AI$46")) Is Nothing Then
            Cells.Interior.ColorIndex = 0
            rowNumberValue = ActiveCell.Row
            columnNumberValue = ActiveCell.Column
            For i = 7 To rowNumberValue
                Cells(i, columnNumberValue).Interior.ColorIndex = 37
            Next i
            For j = 1 To columnNumberValue
                Cells(rowNumberValue, j).Interior.ColorIndex = 37
            Next j
        End If
    End Sub



  • di BS (utente non iscritto) data: 18/12/2015 09:41:52

    mister_x hai ragione, in effetti non avevo testato le conseguenze
    ho fatto delle ricerche ed ho inserito un artefizio (premetto che non è farina del mio sacco ma ho fatto ricerca con una logica)
    prova a dare un'occhio al file che ho aggiunto
    e dimmi se potrebbe essere funzionale
    grazie mille
    quando posso seguo sempre il vs forum e ... non ho parole .... miticooooo
    buona giornata



  • di Mister_x (utente non iscritto) data: 18/12/2015 14:58:00

    ciao Mario ciao BS

    mario provata la tua nuova sub() ma, a parte i i vari cicli for, rimane sempre un refuso di colore nelle varie celle

    BS in questo modo tu escludi il tasto Canc , ma vi sono altri problemi che si verranno a trovare strada facendo
    non sto qui ad elencarteli tutti
    il primo era il tasto Canc , il secondo e' il comando Copia con i suoi comandi annessi , taglia incolla ecc ecc
    trascinamento delle celle , ed altro

    ciao






  • di BS (utente non iscritto) data: 18/12/2015 15:15:22

    OK .. mister_x
    compreso la complessità
    grazie mille



  • di Marius44 data: 18/12/2015 16:58:44

    Allego il mio file che, a mio parere, non presenta nessun refuso di colore nè problemi riguardanti il copia/incolla, taglia, ecc.
    I "cicli" sono solo due: una per la riga ed uno per la colonna (forse si potrebbero unificare).

    Ciao,
    Mario



  • di jack&john (utente non iscritto) data: 18/12/2015 21:37:07

    marius complimenti per la macro.
    potresti scrivere anche una macro alternativa per colorare solamente la riga?



  • di Marius44 data: 19/12/2015 00:05:46

    come puoi vedere, nella macro vi sono due cicli For ... Next.
    Il primo colora la riga della cella attiva mentre il secondo colora la colonna.
    Elimina quello che non ti serve ed hai risolto.

    Ciao,
    Mario



  • di Albatros54 data: 19/12/2015 11:47:36

    Non per essere pignoli, ma la macro che ho postato io,cosa aveva che non andava? forse perchè interessava tutte le celle?
    Ciao
    albatros54





  • di jack&john (utente non iscritto) data: 21/12/2015 08:44:35

    marius, potresti modificare la tua macro per far si che colora solamente tutta la riga? indipendentemente della cella selezionata? per esempio se posiziono il cursore su A4, B4 o C4 ecc... mi colora sempre tutta la riga 4.



  • di Marius44 data: 21/12/2015 09:33:35

    Nella seconda macro che ho postato metti l'apice singolo davanti alle righe che si riferiscono alla riga (cioè fai come sotto) e vedi se ti va bene.

    Ciao,
    Mario
     
    Option Explicit
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim rowNumberValue As Integer, columnNumberValue As Integer, i As Integer, j As Integer
        If Not Intersect(Target, Range("$A$7:$AI$46")) Is Nothing Then
            Cells.Interior.ColorIndex = 0
            rowNumberValue = ActiveCell.Row
            columnNumberValue = ActiveCell.Column
            'For i = 7 To rowNumberValue                ANNULLA
            '    Cells(i, columnNumberValue).Interior.ColorIndex = 37     ANNULLA
            'Next i    ANNULLA
            For j = 1 To columnNumberValue
                Cells(rowNumberValue, j).Interior.ColorIndex = 37
            Next j
        End If
    End Sub



  • di jack&john (utente non iscritto) data: 21/12/2015 10:26:14

    sembra che non mi colori tutta la riga..

    se per esempio posiziono il cursore in C4, mi colora solamente A4, B4 e C4 invece di tutta la riga 4..



  • di Marius44 data: 21/12/2015 14:51:29

    Non mi pare necessario colorare tutta la riga ma fino alla colonna che ti interessa. Per esempio se clicco in C4 mi basta che colori A4:Z4 oppure A4:AZ4 ecc.
    in questo caso nel ciclo For ... Next al posto di

    columnNumberValue

    metti il numero della colonna fino a dove vuoi che si veda il colore.

    Ciao,
    Mario