Condividi:        

macro non colora !! perche ?

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

macro non colora !! perche ?

Postdi raimea » 17/05/20 10:06

ciao

una curiosita "tecnica"

sono riuscito a creare una macro molto "grezza "
ma che funziona tranne l' ultimo controllo.

mi spiego,
la macro controlla delle celle e in relazione a cio'
che ho scritto mi controlla il contenuto e ne colora
in maniera diversa la cella, il carattere , bordo ecc...

le prime 5 condizioni mi vengono rispettate,

ho aggiunto la condizione 6 ( l ultima in basso)
ma non viene applicata !!

la macro non mi da errore
ma non mi colora come descritto

perche ?

grazie

vi allego il file
https://www.dropbox.com/s/iz3rz6us65n6pox/Colora_RI_2.rar?dl=0

macro:
Codice: Seleziona tutto
Sub colora_celle_varie()
Dim CL As Range
   
    '-----------1---X--------------------------------------------
    For Each CL In Cells.SpecialCells(xlCellTypeConstants)
        If UCase(CL) = "X" Then
            With CL
                .Interior.ColorIndex = 6
                .Font.Bold = True
                .Borders.LineStyle = xlContinuous
                .Borders.Weight = xlThick
            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(2, CL.Column), vbMonday) < 6 Then
                'applica formato
                With CL
                    .Interior.ColorIndex = 33
                    .Font.Bold = True
                    .Borders.LineStyle = xlContinuous
                    .Borders.Weight = xlMedium
                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(2, CL.Column), vbMonday) < 6 Then
                'applica formato
                With CL
                    .Interior.ColorIndex = 3
                    .Font.Bold = True
                    .Borders.LineStyle = xlContinuous
                    .Borders.Weight = xlMedium
                End With
       
       End If
     
         '----4 >>----=1 t 1830-----lu_ve--------------------------------------------
           
        '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(2, CL.Column), vbMonday) < 6 Then
                'applica formato
                With CL
                    .Interior.ColorIndex = 40
                    .Font.Bold = True
                    .Borders.LineStyle = xlContinuous
                    .Borders.Weight = xlThin   ' bordo fine
                End With
       
       End If
     
     
          '----5 >>----=sab t 20-------------------------------------------------
           
        '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(2, CL.Column), vbMonday) = 6 Then
                'applica formato
                With CL
                    .Interior.ColorIndex = 1
                    .Font.ColorIndex = 2 'carattere 2 bianco
                    .Font.Bold = True
                    .Borders.LineStyle = xlContinuous
                    .Borders.Weight = xlThin   ' bordo fine
                End With
       
       End If
           
     
       '----6--------t 18 sabato ------------------------------------
        '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(2, CL.Column), vbMonday) = 6 Then
                '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
    '-------------------------------------------------
     
       End If
       
    Next
End Sub

S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1414
Iscritto il: 11/02/10 07:33
Località: lago

Sponsor
 

Re: macro non colora !! perche ?

Postdi Marius44 » 17/05/20 17:59

Ciao
Se non erro (non ho scaricato il file) questa riga di codice

ElseIf UCase(CL) = "1" Then

è ripetuta e, pertanto, la seconda condizione non viene MAI testat.
Ciao,
Mario
Marius44
Utente Senior
 
Post: 655
Iscritto il: 07/09/15 22:00

Re: macro non colora !! perche ?

Postdi raimea » 17/05/20 18:44

ciao
non e x quello
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1414
Iscritto il: 11/02/10 07:33
Località: lago

Re: macro non colora !! perche ?

Postdi wallace&gromit » 17/05/20 20:19

A prescindere dall'esecuzione o meno dei comandi, non vuoi usare un select case invece di tutti questi else if?
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: macro non colora !! perche ?

Postdi raimea » 17/05/20 20:30

ciao
A prescindere dall'esecuzione o meno dei comandi, non vuoi usare un select case invece di tutti questi else if?


certo ,
a me va bene tutto purche funzioni

in totale avro' 8 condizioni da verificare
ed ognuna colorare ecc in maniera diversa

come scritto sopra so' che "e' grezza".. :D

ciao
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1414
Iscritto il: 11/02/10 07:33
Località: lago

Re: macro non colora !! perche ?

Postdi Anthony47 » 17/05/20 23:41

ciao
non e x quello
Secondo me sbagli; cioe' ha ragione Mario

Devi inserire ambedue i test del weekday nel primo ElseIf UCase(CL) = "1" Then (l'unico che sara' elaborato), e puoi cancellare il secondo ElseIf UCase(CL) = "1" (da dove comunque non passerebbe mai)

Cioe:
Codice: Seleziona tutto
         '----4 >>----=1 t 1830-----lu_ve--------------------------------------------
        '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(2, CL.Column), vbMonday) < 6 Then
                'applica formato
                With CL
                    .Interior.ColorIndex = 40
                    .Font.Bold = True
                    .Borders.LineStyle = xlContinuous
                    .Borders.Weight = xlThin   ' bordo fine
                End With
            ElseIf Weekday(Cells(2, CL.Column), vbMonday) = 6 Then
                '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
     
     
          '----5 >>----=sab t 20-------------------------------------------------

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19221
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: macro non colora !! perche ?

Postdi raimea » 18/05/20 06:03

ciao
ovviamente mario aveva ragione ! >> PARDON
avevo provato in maniera errata suo suggerimento.

ora ho applicato cosi le condizioni e funziona,
grazie ad entrambi:

Codice: Seleziona tutto
         '----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(2, 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(2, 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(2, 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(2, 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
S.O. win10, Excell 2019
Avatar utente
raimea
Utente Senior
 
Post: 1414
Iscritto il: 11/02/10 07:33
Località: lago


Torna a Applicazioni Office Windows


Topic correlati a "macro non colora !! perche ?":


Chi c’è in linea

Visitano il forum: Nessuno e 77 ospiti