WORKSHEET VARIABILE



  • WORKSHEET VARIABILE
    di blueeyes (utente non iscritto) data: 19/11/2014 12:12:31

    RAGAZZI, ciao a tutti!!! Avrei bisogno di una soluzione ad un mio piccolo problemi.
    Per voi, super esperti, sarà sicuramente una sciocchezza.
    Veniamo a noi..
    Io ho un file con 8 fogli di lavoro tra cui 5 sono i giorni della settimana a partire da lunedì a venerdì.
    In questi fogli, vado ad inserire dei dati da catalogare.
    Io ho un codice che, data una condizione, mi chiama due macro differenti.
    Le mie macro si chiamano INTEMPO e IN RITARDO.
    Ne riporto una qui sotto.
    Ho bisogno che, il mio WS1 che sarebbe il mio Worksheets("Lunedì"), cambi ogni volta che mi trovo in un foglio diverso attivo
    Il codice si attiva dato un change, quindi mi servirebbe una cosa del tipo:
    "lasciare nella macro il mio worksheet variabile e questo, in base al fatto che sia sul foglio 'lunedì', 'martedì', mi varia'.
    Non so se mi sono spiegata a sufficienza, vi chiedo eventualmente di farmi delle domande.
    Grazie mille..
     
    Sub InTEMPO(y As Integer, z As Integer)
    Dim I As Integer
    Dim J As Integer
    Dim K As Integer
    Dim L As Integer
    Dim WS1 As Worksheet
    Dim WS2 As Worksheet
    Dim WS3 As Worksheet
    
      Set WS1 = Active.Worksheet.Name  'QUESTA è LA MIA PROVA, MA CHIARAMENTE NON FUNGE
      Set WS2 = Worksheets("Disegni")
      Set WS3 = Worksheets("Parametri")
    
    Select Case UCase(Cells(y, 8 + z))
        Case ("DISTENSIONE")
            J = WS3.Cells(2, 2)
        Case ("TAGLIO A 1/2")
            J = WS3.Cells(2, 3)
       Case ("DISTENSIONE+TAGLIO")
            J = WS3.Cells(2, 4)
        Case ("")
            J = 0
            End Select
            
            
            
    Select Case Weekday(Cells(y, 15 + z))
        Case 6, 2
            L = 3
        Case 3
            L = 2
        Case 4, 7, 1
            L = 1
        Case 5
            L = 0
      End Select
      
          
        'k = gg colllaudo
      K = WS3.Cells(2, 5).Value
        'I = gg imballaggio
      
      I = Application.WorksheetFunction.VLookup(UCase(Cells(y, 4 + z)), WS2.Range("a:af"), 32, False)
    
        
    
      
      WS1.Activate
        
    
        'colonna Q DATA APPRONTAMENTO ----->   data consegna - imballo, controllando che non sia sabato o domenica.
         
            If Weekday(DateAdd("d", -I, WS1.Cells(y, 18 + z))) = 7 Then
                Cells(y, 17 + z) = DateAdd("d", -I - 1, WS1.Cells(y, 18 + z))
                ElseIf Weekday(DateAdd("d", -I, WS1.Cells(y, 18 + z))) = 1 Then
                Cells(y, 17 + z) = DateAdd("d", -I - 2, WS1.Cells(y, 18 + z))
                Else: Cells(y, 17 + z) = DateAdd("d", -I, WS1.Cells(y, 18 + z))
                
            End If
           
    
    
        'COLONNA P  DATA APPRONTAMENTO GIORNO
        
         If Cells(y, 21 + z) = "morandini" Then
            Cells(y, 16 + z) = DateAdd("d", -L, WS1.Cells(y, 17 + z))
            Else: Cells(y, 16 + z) = Cells(y, 17 + z)
         End If
         
         
         'COLONNA O  DATA PER DISTENSIONE E TAGLIO
            
    
        If Weekday(DateAdd("d", -J, WS1.Cells(1, 8))) = 1 Then
        Cells(y, 15 + z) = DateAdd("d", -J - 2, WS1.Cells(1, 8))
            ElseIf Weekday(DateAdd("d", -J, WS1.Cells(1, 8))) = 7 Then
            Cells(y, 15 + z) = DateAdd("d", -J - 1, WS1.Cells(1, 8))
            Else: Cells(y, 15 + z) = DateAdd("d", -J, WS1.Cells(1, 8))
        End If
         
         'COLONNA N,  DATA COLLAUDO
         
         If Weekday(DateAdd("d", -K, WS1.Cells(y, 15 + z))) = 1 Then
                Cells(y, 14 + z) = DateAdd("d", -K - 2, WS1.Cells(y, 15 + z))
                ElseIf Weekday(DateAdd("d", -K, WS1.Cells(y, 15 + z))) = 7 Then
                Cells(y, 14 + z) = DateAdd("d", -K - 1, WS1.Cells(y, 15 + z))
                Else: Cells(y, 14 + z) = DateAdd("d", -K, WS1.Cells(y, 15 + z))
         End If
       
     
     'WS1.Range ("C+z" & (y + 1))
    
    End Sub
    



  • di scossa data: 19/11/2014 12:38:34

    Senza entrare nel merito di tutto il codice, il primo errore che salta all'occhio:

    Set WS1 = Active.Worksheet.Name 'QUESTA è LA MIA PROVA, MA CHIARAMENTE NON FUNGE


    deve essere

    Set WS1 = ActiveSheet




    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di blueeyes (utente non iscritto) data: 19/11/2014 14:24:48

    ok. modifica apportata.
    Ma a me servirebbe che nella macro, quando compare il WS1 si faccia riferimento al foglio corrente, sia questo lunedì, martedì, mercoledì.. ecc.
    ws1 dovrebbe essere il mio foglio corrente.. Mi sono spiegata meglio.? =)



  • di scossa data: 19/11/2014 14:33:45

    @blueeyes: ActiveSheet è il tuo folgio attivo (nel momento in cui viene eseguita l'istruzione Set).

    Ma se vuoi aiuti più concreti dal forum credo proprio che dovrai allegre il tuo file (privo di "dati sensibili").



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)



  • di BLUEEYES (utente non iscritto) data: 19/11/2014 14:49:02

    In realtà mi serve solo sapere come considerare WS1 come una variabile che cambia in base al foglio in cui sto operando..

    Cioè se sono nel foglio LUNEDì. ------> le formule contentente "WS1.cells (x,y)" sono pescate in questo foglio.
    CIOè WS1=LUNEDì
    se sono nel foglio MARTEDì ------> la stessa formula di prima "WS1.cells (x,y)" fa riferimento al foglio martedì cioè WS1=MARTEDì
    La domanda è chiara? mi sono spiegata a sufficienza?



  • di scossa data: 19/11/2014 15:40:26

    cit. blueeyes: "La domanda è chiara? mi sono spiegata a sufficienza?"

    La mia precedente risposta
    ActiveSheet è il tuo folgio attivo (nel momento in cui viene eseguita l'istruzione Set).

    non era chiara a sufficienza?



    scossa's web site
    Se tu hai una mela, ed io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno.
    Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)