You are here:--Application.WorksheetFunction.NetworkDays
Application.WorksheetFunction.NetworkDays2019-02-06T21:18:03+02:00

Home Forum Domande su Excel VBA e MACRO Application.WorksheetFunction.NetworkDays

  • Autore
    Articoli
  • everestmiltoneverestmilton
    Partecipante
      Post totali: 6

      Buonasera a tutti, eccomi di nuovo e nel nuovo forum (dopo Archie), a richerdere il vostro prezionso aiuto.

      Nel file allegato si trova il foglio “Forfait”, aprendo la form dal pulsante e inserendo i dati, si dovrebbe calcolare i giorni trascorsi, i giorni lavorativi totalei, ecc.

      Ecco il punto dolente

      Nel modulo due, tramite discussioni e soluzioni trovate in rete opportunamente modificate, sono riuscito a fare in modo che una msgbox mi cicla un array da me creato.

      Come imposto nel modulo 1 la soluzione e modificando le festività in “Application.WorksheetFunction.NetworkDays” ed eliminando la msgbox, non viene calcolato l’array.

      Ho risolto provvisoriamente tramite una colonna di appoggio del foglio, la colonna sarebbe la ZZ, ma gradirei un sistema per evitare colonne di appoggio.

      il codice del modulo 2:

      Sub prova()
      Call Modulo1.Settaggi_Vari
      
      Dim feste() As Variant
      For i = LBound(GiorniFestivi) To UBound(GiorniFestivi)
      ReDim Preserve feste(x)
      feste(x) = GiorniFestivi(i)
      x = x + 1
      Next i
      
      For i = LBound(feste) To UBound(feste)
      FesteS = (feste(i))
      MsgBox (feste(i))
      Next i
      
      End Sub

      E questo è il codice del modulo 1, tra gli apici ci sono i codici funzionati con la colonna di appoggio e in grassetto la parte del codice “incriminato”:

      Sub Tabelline_Riassuntive()
      
      'Ciclo per leggere le ceckbox
      i = 1
      Set rng = F3.Range("B2:B8")
      
      For Each cel In rng
      If cel.Value <> "" Then
      sampleArr(i) = 0
      Else
      sampleArr(i) = 1
      End If
      i = i + 1
      Next cel
      
      For i = LBound(sampleArr) To UBound(sampleArr)
      
      s = sampleArr(i)
      Next i
      
      settimana = Join(sampleArr, "")
      '=========================================================================
      
      Dim Giorni_Annuali_Complessivi As Range, Giorni_Annuali As Range, Giorni_Lavorativi_Totali As Range, Media_mensile_giorni As Range, Totale As Range
      Dim Prezzo_cliente As Range, Ore_giornaliere As Range
      Set Giorni_Annuali_Complessivi = F3.Range("D3")
      Set Giorni_Annuali = F3.Range("D4")
      Set Giorni_Lavorativi_Totali = F3.Range("D5")
      Set Media_mensile_giorni = F3.Range("D6")
      Set Ore_giornaliere = F3.Range("D7")
      Set Prezzo_cliente = F3.Range("D8")
      Set Totale = F3.Range("D9")
      'Inizio = CDate(UserForm1.TextBox2.Value)
      'Fine = CDate(UserForm1.TextBox3.Value)
      Inizio = CDate(F3.Range("A14").Value)
      Fine = CDate(F3.Range("B14").Value)
      Giorni_Annuali_Complessivi = Fine - Inizio + 1
      
      'For conto = 1 To UBound(GiorniFestivi)
      'F3.Cells(conto, "ZZ").Value = GiorniFestivi(conto)
      'Next conto
      
      <strong>Dim feste() As Variant
      For i = LBound(GiorniFestivi) To UBound(GiorniFestivi)
      ReDim Preserve feste(x)
      feste(x) = GiorniFestivi(i)
      x = x + 1
      Next i</strong>
      
      <strong>For i = LBound(feste) To UBound(feste)
      FesteS = (feste(i))
      'MsgBox (feste(i))
      Next i</strong>
      
      <strong>Giorni_Annuali = Application.WorksheetFunction.NetworkDays(Inizio, Fine, FesteS)</strong>
      'Giorni_Annuali = Application.WorksheetFunction.NetworkDays(Inizio, Fine, F3.Range("ZZ1:ZZ34"))
      Giorni_Lavorativi_Totali = Application.WorksheetFunction.NetworkDays_Intl(Inizio, Fine, settimana, F3.Range("ZZ1:ZZ34"))
      
      Media_mensile_giorni = Giorni_Annuali / (Month(Fine) - Month(Inizio))
      Totale = Application.WorksheetFunction.MRound(Media_mensile_giorni * (Prezzo_cliente * Ore_giornaliere), 10)
      
      F3.Range("ZZ1:ZZ100").Clear
      If Totale < 300 Then
      MsgBox "Se il cliente chiede di pagare meno, passare a tariffa oraria di 25 franchi"
      End If
      
      Set Giorni_Annuali_Complessivi = Nothing
      Set Giorni_Annuali = Nothing
      Set Giorni_Lavorativi_Totali = Nothing
      Set Media_mensile_giorni = Nothing
      Set Ore_giornaliere = Nothing
      Set Prezzo_cliente = Nothing
      Set Totale = Nothing
      End Sub

      Il file:

      http://www.filedropper.com/calcoloforfait

      Vi ringrazio anticipatamente

      Ringo

      Excel 2010

    • BySalvBySalv
      Amministratore del forum
        Post totali: 480

        Ciao appena posso ti rispondo, non sto bene

        bye bye

      • everestmiltoneverestmilton
        Partecipante
          Post totali: 6

          Ciao Salv, caspita, rimettiti presto, lo so che sono “guai” di stagione, almeno immagino; ma tu sei come quello della pubblicità…..se sei ammalato i computer vanno tutti in tilt e le aziende/privati si bloccano :yahoo:   :yahoo:   :yahoo:

          Scherzavo, fai con calma e curati a dovere, ciaoooooooo

          Ringo

          Excel 2010

        • everestmiltoneverestmilton
          Partecipante
            Post totali: 6

            ciao ragazzi, nessuna soluzione?

             

            Ringo

            Excel 2010

          Devi essere loggato per rispondere a questa discussione.

          Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

          Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

          Chiudi