› Sviluppare funzionalita su Microsoft Office con VBA › colora righe alternate
-
AutoreArticoli
-
Ciao,
nel workbook allegati nel modulo del foglio c'è una macroper colorare righe alterne.
per abilitare determinate colonne al collegamento ipertestuale
per abilitare determinate colonne al formato cellec'è 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.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.
Più che importante, era una mia curiosità se era possibile lasciare il formato cella all'avvio della macro.
Comunque grazie lo stesso.
-
AutoreArticoli
