Condividi:        

una macro su piu fogli

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

una macro su piu fogli

Postdi raimea » 30/03/16 18:18

ciao
in un file ho 12 fogli con i nomi dei mesi.
ho una macro (e' grezza ma funziona),
che quando la avvio opera sul foglio attivo.

vorrei poter aggiungere un ciclo , in modo che quando sono in un mese qualunque ed avvio tale macro
questa operi anche sugli altri 11 mesi.
Codice: Seleziona tutto
Sub coloro1()
  Dim campo As Range, c As Range
     
     Set campo = Range("h6:al105")
     
   If [b6] = "" Then
         MsgBox "B6 ed il mese e' vuoto...", vbCritical
         
'--------------------------
'RIATTIVO LE APPLICATION
With Application
    .Calculation = xlCal
    .EnableEvents = True
    .ScreenUpdating = True
End With

      Exit Sub
    End If
 
 '---coloro 18,30----------------
 RRs = 2
     CCs = 24  ' colonna =X
        NumS = Cells(RRs, CCs).Value
        For RRT = 6 To 105
           For cct = 8 To 38  ' 37=col Ay
           
          If Cells(RRT, cct).Value = NumS Then
    With Cells(RRT, cct)
        .Interior.ColorIndex = 8  'colore cella
        .Font.ColorIndex = 1 ' colore carattere
    End With
End If
          Next cct
        Next RRT
       
 '---coloro BASE----------------
 RRs = 2
     CCs = 23  ' colonna W
        NumS = Cells(RRs, CCs).Value
        For RRT = 6 To 105
           For cct = 8 To 38
           
          If Cells(RRT, cct).Value = NumS Then
    With Cells(RRT, cct)
        .Interior.ColorIndex = 36  'colore cella
        .Font.ColorIndex = 1 ' colore carattere
    End With
End If
          Next cct
        Next RRT
  '---coloro 20----------------
 RRs = 2
     CCs = 25  ' colonna =Y
        NumS = Cells(RRs, CCs).Value
        For RRT = 6 To 105
           For cct = 8 To 38
           
          If Cells(RRT, cct).Value = NumS Then
    With Cells(RRT, cct)
        .Interior.ColorIndex = 1  'colore cella
        .Font.ColorIndex = 19 ' colore carattere
    End With
End If
          Next cct
        Next RRT
       
   '---coloro r1 rep merc----------------
 RRs = 2
     CCs = 26  ' colonna =Z
        NumS = Cells(RRs, CCs).Value
        For RRT = 6 To 105
           For cct = 8 To 38
           
          If Cells(RRT, cct).Value = NumS Then
    With Cells(RRT, cct)
        .Interior.ColorIndex = 4  'colore cella
        .Font.ColorIndex = 1 ' colore carattere
    End With
End If
          Next cct
        Next RRT
       
     '---coloro r2 rep domen----------------
 RRs = 2
     CCs = 27  ' colonna =AA
        NumS = Cells(RRs, CCs).Value
        For RRT = 6 To 105
           For cct = 8 To 38
           
          If Cells(RRT, cct).Value = NumS Then
    With Cells(RRT, cct)
        .Interior.ColorIndex = 7  'colore cella
        .Font.ColorIndex = 1 ' colore carattere
    End With
End If
          Next cct
        Next RRT
'---------------------------------
For Each c In campo
     With Cells(c.Row, c.Column)

         Select Case True
               
              '---coloro LL da lun-ven--------
             Case c.Text = "LL" And (Cells(5, c.Column) <> 7 And Cells(5, c.Column) <> 1)
                 .Font.ColorIndex = 2
                 .Interior.ColorIndex = 9
             
              '---coloro RI da lun-ven--------
            Case c.Text = "RI" And (Cells(5, c.Column) <> 7 And Cells(5, c.Column) <> 1)
                 .Font.ColorIndex = 2
                 .Interior.ColorIndex = 9
                 
             '---coloro B sabato--------
             Case c.Text = "B" And (Cells(5, c.Column) = 7)  ' 7= sab
                .Font.ColorIndex = 2
                .Interior.ColorIndex = 11
                 
             '---coloro B domenica--------
             Case c.Text = "B" And (Cells(5, c.Column) = 1) '1 = domen
                 .Font.ColorIndex = 2   ' bianco carat
                 .Interior.ColorIndex = 51  ' sfondo
         
             '---coloro BF da lun-ven  Base festivo--------
             Case c.Text = "BF" And Cells(5, c.Column) <> 7 And Cells(5, c.Column) <> 1
                 .Font.ColorIndex = 2       ' bianco carat
                 .Interior.ColorIndex = 3  'rosso sfondo
         
         End Select
     End With
 Next c


 '----adatto largh col-----------------------
        Columns("C:Al").ColumnWidth = 4
        Columns("g").ColumnWidth = 1
 

    Range("AK1").Select
       
 '-------------
 Call evidenziaB  ' metto cornice b3-b2

    Range("a2").Select
   
    ActiveWindow.DisplayGridlines = False  'protegge il fgl
   
End Sub


allego il file
https://dl.dropboxusercontent.com/u/96374724/stampa%20mesi.rar

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

Sponsor
 

Re: una macro su piu fogli

Postdi Anthony47 » 30/03/16 23:43

ho una macro [. . .] grezza ma funziona
Se funziona e' sempre perfetta!

Rinomina la tua attuale Sub coloro1 come Sub coloro11; poi aggiungi questa:
Codice: Seleziona tutto
Sub Coloro1()
For i = 1 To 12
    Sheets(Format(DateSerial(2000, i, 1), "mmmm")).Select
    Call coloro11
Next i
End Sub

In questo modo i pulsanti che richiamavano la vecchia coloro1 chiameranno la macro con il ciclo, che a sua volta si occupa di richiamare la colora11.

Vedo che usi spesso la notazione del tipo [b6] per indirizzare una cella; sconsiglio questa notazione, che letteralmente significa applicare il Metodo Evaluate al contenuto della cella, perche' non sempre il risultato e' quello che ti intuitivamente ti aspetti.

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

Re: una macro su piu fogli

Postdi raimea » 31/03/16 06:33

ciao
ottimo tutto bene
svolge cio' che chiedevo
----------------------------------------
usi spesso la notazione del tipo [b6] per indirizzare una cella

di questo ho capito che non va molto bene
ma come potrei impostare x ottenere stesso tipo di
controllo e risultato ?

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

Re: una macro su piu fogli

Postdi Anthony47 » 31/03/16 13:49

Se con [b6] vuoi far riferimento al contenuto della celle B6 allora userai la piu' classica
Codice: Seleziona tutto
Range("B6").Value
La tastiera ne uscira' piu' stressata ma tu sai che cosa ottieni.

Altrimenti dipende da cosa vuoi ottenere

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

Re: una macro su piu fogli

Postdi raimea » 31/03/16 16:30

ok
ho sistemato anche il [B6] ,

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


Torna a Applicazioni Office Windows


Topic correlati a "una macro su piu fogli":


Chi c’è in linea

Visitano il forum: Nessuno e 77 ospiti