Con questa nomino i campi del Calendario e la Lista Nomi del foglio Nascosto:
Sub nominaCampi()
ActiveWorkbook.Names.Add Name:="ListaNomi", RefersTo:="=Nascosto!" & NomeRangeMisurato(1, 1, 1, 2, Sheets("Nascosto"), "")
ActiveWorkbook.Names.Add Name:="TurnoGiorno", RefersTo:="=" & NomeRangeMisurato(5, 1, 2, 2, ActiveSheet, "")
ActiveWorkbook.Names.Add Name:="Reparto", RefersTo:="=" & NomeRangeMisurato(5, 1, 3, 3, ActiveSheet, "")
ActiveWorkbook.Names.Add Name:="TurnoNotte", RefersTo:="=" & NomeRangeMisurato(5, 1, 4, 4, ActiveSheet, "")
End Sub
Con questa, poi, una volta copiati i nomi dalla Lista Nomi del foglio Nascosto, nomino i ranges Lista Nomi Mese, Lista Reparti, Numeri Giorni, Numeri Notti (ossia, per gli ultimi due, le celle dove vengono segnati i turni diurni (solo festivi) e quelli notturni)
Sub copiaLista()
Dim k As Integer, z As Integer
z = 15 '(posizione iniziale della lista dei nomi del mese)
For k = 1 To Range("ListaNomi").Rows.Count
ActiveSheet.Cells(z, 6).FormulaR1C1 = Range("ListaNomi").Cells(k, 1).FormulaR1C1
z = z + 1
Next k
ActiveWorkbook.Names.Add Name:="ListaNomiMese", RefersTo:="=" & Range(Cells(15, 6), Cells(z - 1, 6)).Address(True, True)
Griglia Range("ListaNomiMese")
ActiveWorkbook.Names.Add Name:="ListaReparti", RefersTo:="=" & Range(Cells(15, 7), Cells(z - 1, 7)).Address(True, True)
Griglia Range("ListaReparti")
Range("ListaReparti").Interior.Color = RGB(100, 255, 200)
ActiveWorkbook.Names.Add Name:="NumeriGiorni", RefersTo:="=" & Range(Cells(15, 8), Cells(z - 1, 8)).Address(True, True)
Griglia Range("NumeriGiorni")
Range("NumeriGiorni").Interior.Color = RGB(200, 255, 255)
ActiveWorkbook.Names.Add Name:="NumeriNotti", RefersTo:="=" & Range(Cells(15, 9), Cells(z - 1, 9)).Address(True, True)
Griglia Range("NumeriNotti")
Range("NumeriNotti").Interior.Color = RGB(200, 100, 255)
With ActiveSheet
With .Cells(Range("ListaNomiMese").Row - 1, 6)
.Interior.ColorIndex = 6
.FormulaR1C1 = "NOME"
.HorizontalAlignment = xlCenter
End With
With .Cells(Range("ListaNomiMese").Row - 1, 7)
.Interior.ColorIndex = 8
.FormulaR1C1 = "REPARTO"
End With
With .Cells(Range("ListaNomiMese").Row - 1, 8)
.Interior.ColorIndex = 8
.FormulaR1C1 = "GIORNO"
End With
With .Cells(Range("ListaNomiMese").Row - 1, 9)
.Interior.ColorIndex = 5
.Font.ColorIndex = 2
.FormulaR1C1 = "NOTTE"
End With
.Columns(6).ColumnWidth = 26
Exit Sub
With .Columns(7)
.ColumnWidth = 6
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
With .Columns(8)
.ColumnWidth = 6
.HorizontalAlignment = xlCenter
.Font.Bold = True
End With
End With
End Sub
Mi rendo conto che per il foglio calendario, nella routine nominaCampi, non ho denominato il range dei giorni del mese.
Presto fatto:
Sub nominaCampi()
ActiveWorkbook.Names.Add Name:="GiorniDelMese", RefersTo:="=" & NomeRangeMisurato(5, 1, 1, 1, ActiveSheet, "")
ActiveWorkbook.Names.Add Name:="ListaNomi", RefersTo:="=Nascosto!" & NomeRangeMisurato(1, 1, 1, 2, Sheets("Nascosto"), "")
ActiveWorkbook.Names.Add Name:="TurnoGiorno", RefersTo:="=" & NomeRangeMisurato(5, 1, 2, 2, ActiveSheet, "")
ActiveWorkbook.Names.Add Name:="Reparto", RefersTo:="=" & NomeRangeMisurato(5, 1, 3, 3, ActiveSheet, "")
ActiveWorkbook.Names.Add Name:="TurnoNotte", RefersTo:="=" & NomeRangeMisurato(5, 1, 4, 4, ActiveSheet, "")
End Sub
Mi rendo conto che con il codice che ho creato risulta facilissimo denominare ranges dopo aver preso le misure, a tutto vantaggio della chiarezza della programmazione e della leggibilità del codice.
Nessun commento:
Posta un commento