You are here:Home-Domande su Excel VBA e MACRO-dichiarare il range ad una macro funzionante
dichiarare il range ad una macro funzionante2020-06-07T08:22:12+02:00

Home Forum Domande su Excel VBA e MACRO dichiarare il range ad una macro funzionante

Taggato: 

Visualizzazione 3 filoni di risposte
  • Autore
    Post
    • raimearaimea
      Partecipante
        Post totali: 24

        ciao

        ho questa macro che funziona

        MA mi contrlla l’ intero foglio

        io avrei bisogno di modificarla

        dicendo di controllare SOLO il range  E6:AM100

        —————————————————————————

        Sub colora_intero_mese()

        Dim CL As Range

         

        For Each CL In Cells.SpecialCells(xlCellTypeConstants)

         

        If UCase(CL) = “X” Then

        With CL

        .Interior.ColorIndex = 53 ‘ sfondo 9 marrone

        .Font.ColorIndex = 6 ‘carattere 6 giallo

        .Font.Bold = True   ‘ grassetto

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlMedium

        End With

         

        ‘——2–LL—-lu_ve———————————————

         

        ‘oppure se il valore della della e’ “LL” …

         

        ElseIf UCase(CL) = “LL” Then

        ‘se il giorno della settimana della prima riga e’ inferiore a 5 (1=lun, 2=mar ecc)

        If Weekday(Cells(5, CL.Column), vbMonday) < 6 Then

        ‘applica formato

        With CL

        .Interior.ColorIndex = 6 ‘ sfondo giallo

        .Font.ColorIndex = 1     ‘carattere 1 nero

        .Font.Bold = True        ‘ grassetto

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlMedium  ‘ bordo medio

        End With

         

        ElseIf Weekday(Cells(5, CL.Column), vbMonday) = 6 Then  ‘solo sabat

        ‘applica formato

        With CL

        .Interior.ColorIndex = 0 ‘ sfondo nessuno

        .Font.ColorIndex = 16     ‘carattere grigio

        .Font.Bold = False      ‘ carattere normale

        .Borders.Weight = xlHairline    ‘ bordo tratteggiato

         

         

        End With

        End If

         

        ‘—-3 >>—-RI————-lu_ve————————————

         

        ‘oppure se il valore della della e’ “RI” …

        ElseIf UCase(CL) = “RI” Then

        ‘se il giorno della settimana della prima riga e’ inferiore a 5 (1=lun, 2=mar ecc)

        If Weekday(Cells(5, CL.Column), vbMonday) < 6 Then

        ‘applica formato

        With CL

        .Interior.ColorIndex = 33 ‘ sfondo azzurro

        .Font.ColorIndex = 3 ‘carattere rosso

        .Font.Bold = True

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlMedium  ‘ bordo medio

        End With

         

        ElseIf Weekday(Cells(5, CL.Column), vbMonday) = 7 Then  ‘solo domenica

        ‘applica formato

        With CL

        .Interior.ColorIndex = 0 ‘ sfondo nessuno

        .Font.ColorIndex = 16     ‘carattere grigio

        .Font.Bold = False      ‘ carattere normale

        .Borders.Weight = xlMedium  ‘ bordo medio

         

        End With

         

         

        End If

         

        ‘—-4 e 5 >>—-=1 t 1830—–lu_ve–e sabat——————————————

        ‘oppure se il valore della della e’ “1” …

        ElseIf UCase(CL) = “1” Then

        ‘se il giorno della settimana della prima riga e’ inferiore a 5 (1=lun, 2=mar ecc)

        If Weekday(Cells(5, CL.Column), vbMonday) < 6 Then ‘ da lun_ven

        ‘applica formato

        With CL

        .Interior.ColorIndex = 46 ‘ sfondo giallo

        .Font.ColorIndex = 1     ‘carattere 1 nero

        .Font.Bold = True        ‘ grassetto

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlThin

        End With

         

        ElseIf Weekday(Cells(5, CL.Column), vbMonday) = 6 Then  ‘solo sabat

        ‘applica formato

        With CL

        .Interior.ColorIndex = 46 ‘ sfondo giallo

        .Font.ColorIndex = 1     ‘carattere 1 nero

        .Font.Bold = True        ‘ grassetto

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlThin

        End With

        End If

         

        ‘—-6 e 7 >>—-=2 t 20—–lu_ve–e sabat——————————————

        ‘oppure se il valore della della e’ “2” …

        ElseIf UCase(CL) = “2” Then

        ‘se il giorno della settimana della prima riga e’ inferiore a 5 (1=lun, 2=mar ecc)

        If Weekday(Cells(5, CL.Column), vbMonday) < 6 Then  ‘ da lun_ve

        ‘applica formato

        With CL

        .Interior.ColorIndex = 1 ‘ sfondo 1 nero

        .Font.ColorIndex = 2 ‘carattere 2 bianco

        .Font.Bold = True

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlHairline   ‘ bordo tratteggiato

        End With

         

        ElseIf Weekday(Cells(5, CL.Column), vbMonday) = 6 Then  ‘solo sabat

        ‘applica formato

        With CL

        .Interior.ColorIndex = 1 ‘ sfondo 1 nero

        .Font.ColorIndex = 2 ‘carattere 2 bianco

        .Font.Bold = True

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlHairline    ‘ bordo tratteggiato

        End With

        End If

         

        ‘————t B sabato dom e lu ve ————————————

        ‘oppure se il valore della della e’ “LL” …

        ElseIf UCase(CL) = “B” Then

        ‘se il giorno della settimana della prima riga e’ inferiore a 5 (1=lun, 2=mar ecc)

        If Weekday(Cells(5, CL.Column), vbMonday) = 6 Then

        ‘applica formato

        With CL

        .Interior.ColorIndex = 16 ‘ sfondo grigio

        .Font.ColorIndex = 6     ‘carattere 6 giallo

        .Font.Bold = True        ‘ grassetto

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlThin

        End With

         

        ElseIf Weekday(Cells(5, CL.Column), vbMonday) = 7 Then  ‘solo domenc

        ‘applica formato

        With CL

        .Interior.ColorIndex = 38 ‘ sfondo

        .Font.ColorIndex = 1 ‘carattere 1 nero

        .Font.Bold = True

        .Borders.LineStyle = xlContinuous

        .Borders.Weight = xlThin    ‘ bordo cornice

        End With

         

        ElseIf Weekday(Cells(5, CL.Column), vbMonday) < 6 Then ‘ lun _ven

        ‘applica formato

        With CL

        .Interior.ColorIndex = 0 ‘ sfondo

        .Font.ColorIndex = 1      ‘carattere 1 nero

        .Font.Bold = True         ‘ carattere grassetto

        .Borders.Weight = xlHairline    ‘ bordo tratteggiato

         

        End With

         

        End If

        ‘————————————————————-

        End If

        Next

        ‘—————————————

        End Sub

        ————————————————————————————————————-

         

        grazie

         

         

         

         

         

         

      • BySalvBySalv
        Amministratore del forum
          Post totali: 728

          Ciao basta indicare il range, la modifica da fare è l’inizio della macro

          Sub colora_intero_mese()
          Dim CL As Range
          Dim Rng'<-------aggiunta
          
          Set Rng = Range("E6:AM100")'<---- aggiunta in questo modo dichiari il range da controllare
          
          For Each CL In Rng'<------Modifica dove "Rng" è l'intervallo celle che vuoi controllare

          potrebbero essere anche più range esempio, prima finisce il primo intervallo e poi passa al secondo intervallo

          Set rng = Range("E6:M100, P40:S200")

          non ho controllato tutta la macro, ci vorrebbe il file ma visto che fa il controllo su tutte le celle non occupate basta questa modifica, altrimenti avrei bisogno del file per controllare di quale “Type” fa il controllo.

          Ciao By Sal (8-D

          Ciao By Sal (8-)
          se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

        • raimearaimea
          Partecipante
            Post totali: 24

            ciao

            e’ tutto ok

            capito discorso di piu range diversi

             

            grazie :good:

          • BySalvBySalv
            Amministratore del forum
              Post totali: 728

              Ricorda che con “Set” il range viene letto orizzontalmente, cioè “E6,F6,G6,etc..” poi passa a “E7,F7,G7,etc..,etc..”

              Ciao (8-D

              Ciao By Sal (8-)
              se ti piace la soluzione aiuta a sostenere il Forum con una DONAZIONE a piacere, Grazie

          Visualizzazione 3 filoni di risposte
          • Devi essere connesso per rispondere a questo topic.