Valutazione 4.87/ 5 (100.00%) 5838 voti

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
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1098
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
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
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
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1098
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
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
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
http://www.lelugarine.eu
S.O. Seven7, Excell 2010
Avatar utente
raimea
Utente Senior
 
Post: 1098
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 16 ospiti