Login Registrati
Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
  • Autore
    Articoli
  • #46323 Score: 0 | Risposta

    Ciao,
    nel workbook allegati nel modulo del foglio c'è una macro

    per colorare righe alterne.
    per abilitare determinate colonne al collegamento ipertestuale
    per abilitare determinate colonne al formato celle

    c'è un problema se nelle colonne
    Range("C:C, D:D, E:E, F:F, G:G, H:H")
    coloro le celle esempio di giallo poi la macro per colore righe alternate toglie il colore.

    `Option Explicit
    
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
             
        Dim n As Long
        Dim avviso As String
        Dim bClr As Boolean
        Dim c As Range, rChanged As Range
        Dim cols As Long
        
    '-------------------------------------------------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------------------------------------------------
     'colora righe alternate
     
     Const sRange As String = "A8:Q5000"
     
     Application.ScreenUpdating = False
     ActiveSheet.Unprotect Password:="987654"
     
      Set rChanged = Intersect(Target, Range(sRange).Columns("A:Q"))
      If Not rChanged Is Nothing Then
               
        With Range(sRange)
          .Interior.ColorIndex = xlNone
          cols = .Columns.Count
        End With
        
        'For Each c In Range(sRange).Columns(1).Cells
          'If c.Value <> vbNullString Then
          
         For Each c In Range(sRange).Resize(ColumnSize:=1)
         If WorksheetFunction.CountA(c.Resize(ColumnSize:=17)) > 0 Then '<<< 17 colonne
          
            If bClr Then
            
              c.Resize(, cols).Interior.ColorIndex = 37 'colore
              'c.Resize(, cols).Interior.Color = RGB(150, 210, 164)
              
            End If
            bClr = Not bClr
          End If
        Next c
        
        Application.ScreenUpdating = True
        ActiveSheet.Protect Password:="987654"
        
      End If
      
    '-------------------------------------------------------------------------------------------------------------------------
    'per inserire coll. ipertest. solo in certe colonne
    'per scrivere modificare solo in certe colonne
    
    
       'ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        If Not Intersect(Target, Range("C:C, D:D, E:E, F:F, G:G, H:H")) Is Nothing Then 'colonne formattazione
            'ActiveSheet.Unprotect "987654"
            '---------------------------------------------------------
            Select Case Target.Column 'colonne ipertestuale
                Case Is = 3, 5, 7, 8
                    ActiveSheet.Protect Password:="987654", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True, AllowInsertingHyperlinks:=True, AllowFiltering:=True
                    'MsgBox "Fatto con link"
                            
                Case Else
                    ActiveSheet.Protect Password:="987654", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True, AllowInsertingHyperlinks:=False, AllowFiltering:=True
                    'MsgBox "Fatto senza link"
            End Select
            '---------------------------------------------------------
        Else
            'ActiveSheet.Unprotect "987654"
            ActiveSheet.Protect Password:="987654", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=False, AllowInsertingHyperlinks:=False, AllowFiltering:=True
            'MsgBox "Fatto Altro"
        End If
             
    '-------------------------------------------------------------------------------------------------------------------------
    
    
    
    End Sub
    
    `
    Allegati:
    You must be logged in to view attached files.
    #46329 Score: 0 | Risposta

    alexps81
    Moderatore
      55 pts

      Povero foglio tuo   ...cioè tutte le volte che cambi la selezione della cella fai partire la macro che toglie il colore a tutto il range, poi lo riapplica in modo alternato fin dove trova una cella non vuota?

      In questa mia domanda perplessa c'è anche la spiegazione al fatto come mai se tu cambi coloro in una cella, poi essa ricambia il colore in blu o nullo non appena sposti il focus su un'altra cella.

      Ma è così importante ricalcolare ogni volta ogni riga per poterla colorare di blu o lasciarla vuota? Quale sarebbe il reale obiettivo finale da raggiungere? Non penso che sia quello di colorare le righe alternate.

      #46330 Score: 0 | Risposta

      Più che importante, era una mia curiosità se era possibile lasciare il formato cella all'avvio della macro.

      Comunque grazie lo stesso.

       

      #46331 Score: 0 | Risposta

      alexps81
      Moderatore
        55 pts

        Secondo me per colorare righe alternate se la cella di quella riga non è vuota, ti basta una semplice formattazione condizionale. Utilizzando la formula Resto e Rif.Riga...ma quello lo vediamo dopo.

        Il punto è capire cosa vuoi ottenere come risultato finale. 

      Login Registrati
      Stai vedendo 4 articoli - dal 1 a 4 (di 4 totali)
      Rispondi a: colora righe alternate
      Gli allegati sono permessi solo ad utenti REGISTRATI
      Le tue informazioni: