Inserire il giorno della settimana

  • FILE ALLEGATI:    
  • Inserire il giorno della settimana (Excel 2013) di Saverio (Utente non iscritto) data: 21/09/2018 18:53:43 



    Buongiorno, ho bisogno di aiuto, il visual basic non lo conosco bene. In un foglio excel, ho una tabella; ho attivato con un bottonecomando, un calendario che mi genera la data, e poi inserire automtaticamente,nell intervallo di celle c4:c34 i giorni della settimana.
    Es. In una cella, a1, ho ricavato sa calendario 01/09/2018
    Attraverso il comando testo in c4, ho ricAvato "sab".
    Poi però non avendo né conoscenza delle istruzioni vba e poca roba di programmazione, come dicevo, voglio con una routine vba automaticamente, inseriti c5=com, c6=l'un e via discorrendo fino a c34. Vi prego non so come proseguire. Grazie saverio
  • di Vecchio Frac (Moderatore) data: 24/09/2018 20:44:11 



    Ma non fai prima a impostare un formato personalizzato nel range da te specificato che mostri solo il giorno della settimana, o no? senza addentrarti troppo in VBA, intendo.
  • di saverio (Utente non iscritto) data: 25/09/2018 08:22:45 



    Buongiorno grazie per avermi risposto.
    Si certo, ho pensato subito a questo, dopo
    aver formattato il range e poi da c4 scendevo giu fino a c34.
    Vorrei pero automatizzare questo meccanismo di riempimento automatico
    in quanto il prodotto che sto realizzando
    intendo consegnatlo
     
    intendo consegnarlo e quindi non sono io l'utente finale.
    Ecco perche cerco aiuto.
    Grazie.
    Se,volete vi incollo il codice vba che mi sta facendo impazzire.
  • di Vecchio Frac (Moderatore) data: 25/09/2018 09:55:43 



    Sì, riporta il codice così ragioniamo assieme sul campo, altrimenti devo ricostruire uno scenario di cui non so niente.
  • di Saverio (Utente non iscritto) data: 25/09/2018 18:34:21 



    Sub riempi()
    Dim i As Integer
    Dim data1 As Date
    Dim msgdat As Integer
    Worksheets("Foglio2").Activate
    data1 = Cells(1, 1) ' a data1 assegno il contenuto della cella "a1" cioe' 01/09/2018
    ' in c4 del range (c4:c34) c'e' gia' assegnato "sab" in quanto 01/09/2018 e' appunto sabato

    ' indice che parte da c5 per arrivare a c34

    For i = 5 To 34
    theday = theday + 1 ' indice che parte dal 2^ giorno del mese per arrivare al 31.
    ActiveCell.Cells(i, 1).Value = theday + data1
    Cells(i, 1).Select
    Cells(i, 1).Value = MsgBox("Il Giorno inserito in tabella : " & WeekdayName(theday, 1))
    ' msgbox di comodità testa se for.. next funziona
    Next i

    End Sub
     
    Buongiorno  a tutti, buondi anke a te vecchio frac, ecco il codice  vba come mi ha i  richiesto.
    Spero possa essere utile il commento  ad ogni riga
    Grazie  infinite. Saverio
  • di Vecchio Frac (Moderatore) data: 26/09/2018 08:58:55 



    Se non ho capito male, il codice che ti serve è questo.
     
    Option Explicit
    
    Sub riempi()
    Dim i As Integer
    Dim anno As Integer, mese As Integer, days As Integer
    Dim data1 As Date
    
        Worksheets("Foglio2").Activate
        data1 = Cells(1, 1) ' a data1 assegno il contenuto della cella "a1" cioe' 01/09/2018
        
        anno = Year(data1)
        mese = Month(data1)
        
        days = DateDiff("d", DateSerial(anno, mese, 1), DateSerial(anno, mese + 1, 0)) + 1
    
        For i = 0 To days - 1
            Cells(i + 4, "A") = data1 + i
            Cells(i + 4, "C") = Format(Cells(i + 4, "A"), "dddd")
        Next i
    
    End Sub
  • di saverio (Utente non iscritto) data: 26/09/2018 14:05:29 



    Buongiorno a tutti.
    Messaggio a vecchio frac
    Ti ringrazio tantissimo. la tua routine
    FUNZIONA da Dio. Bravo.
    Ora, devo solo ma conto di farlo da solo
    colorare di rosso le domeniche.
    Anzi un consiglio: meglio la formattazione condizionale

     
    condizionale o mi consigli un altro metodo?
    Che sistema consigli x "colorare"i gg festivi nell anno come natale capodanno pasqua 1nov. e via discorrendo?
    grazie ancora e appena possibile se esiste un sistema, lo gradirei assai.saverio
  • di Vecchio Frac (Moderatore) data: 26/09/2018 15:18:39 



    Per colorare l'interno di rosso aggiungi pochissimo codice.
    Per la tabella delle festività, puoi utilizzare una serie di If nel codice e colorare come ti piace.
    Nell'esempio ho colorato di rosso le domeniche e di verde la festività dell'Immacolata (prova a impostare 1 dicembre 2018 in cella A1 del foglio2 e fai girare la macro).
     
    Option Explicit
    
    Sub riempi()
    Dim i As Integer
    Dim anno As Integer, mese As Integer, days As Integer
    Dim data1 As Date
    Dim thedate As Date
    
        Worksheets("Foglio2").Activate
        data1 = Cells(1, 1) ' a data1 assegno il contenuto della cella "a1" cioe' 01/09/2018
        
        anno = Year(data1)
        mese = Month(data1)
        
        days = DateDiff("d", DateSerial(anno, mese, 1), DateSerial(anno, mese + 1, 0)) + 1
    
        For i = 0 To days - 1
            thedate = data1 + i
            Cells(i + 4, "A") = thedate
            Cells(i + 4, "C") = Format(thedate, "dddd")
            
            Cells(i + 4, "A").Interior.Color = -4142
            
            'domeniche : interno rosso
            If Weekday(thedate) = vbSunday Then
                Cells(i + 4, "A").Interior.Color = vbRed
            End If
            
            '8 dicembre festa dell'Immacolata : interno verde
            If Day(thedate) = 8 And Month(thedate) = 12 Then
                Cells(i + 4, "A").Interior.Color = vbGreen
            End If
        Next i
    
    End Sub
  • di saverio (Utente non iscritto) data: 26/09/2018 16:47:30 



    Buon pomeriggio a tutti.
    Grazie vecchio frac.
    sulle if sono d'accordo con te.
    faccio tesoro del tuo esempio per
    colorare le domeniche e le festività.
    appena termino il lsvoro ti aggiorno.
    Grazie ancora. saverio
  • di Saverio (Utente non iscritto) data: 26/09/2018 18:53:15 



    Buona sera vecchio frac.
    Ti ringrazio tanto. Ho provato la routine con l'opzione del colore e funziona perfettamente.anche il 29 debb. Del 2020 è corretto.
    Ho anche inserito facendo tesoro dei tuoi esempi, tutte le festività dell'anno, colorando anke il giorno corrispondente es sia il giorno che cade immacolata e anche l' 8.
    Adesso devo capire e proseguo da me per altri quesiti.


     
    InQuesta tabella con range c4,h34, l'utente inserirà
    Presenze, ferie,riposi,turni noturni ogni mese.
    Voglio capire  e decidere se a fine mese mese l'utente deve copiare foglio2 con sett 2018 , in foglio3 e lavorare x ottobre 2018 dopo un reset  tabella già impostato.
    Devo quindi capire se devo far generare nuovo foglio lavoro
    o salvare i dati del mese al 30 sett. In foglio_anagrafiche_Alfa , quelli x beta in .......beta  e via dicendo. Tutto con bottoni comando.
    
  • di Saverio (Utente non iscritto) data: 26/09/2018 18:56:32 



    Continua..
    Mi auguro di non disturbarti ma semmai di aggiornarti come vanno le cose.
    Grazie ancora dell'aiuto.
    Saverio
  • di Vecchio Frac (Moderatore) data: 26/09/2018 19:20:22 



    Prova che pian piano ci riuscirai :)
    Se hai bisogno passerò di qui ogni tanto a vedere come va.
  • celle che lampeggisno di saverio (Utente non iscritto) data: 04/10/2018 16:56:17 



    Buonasera a tutti, ho per piacere bisogno di un Vs. aiuto.
    Intanto ho allegato del foglio2 due tabelle: la prima a sx e' stata ideata per le elaborazioni dei turin e presenze con cella che si riempie
    con menu a tendina; la seconda tabella a dx, fa da riepilogo e, in base ai valori caricati in anagrafica
    fa il test per controlo ore, festivi, ferie ecc ecc.
    Quando ad es. la cella t3 dei festivi(cella t3) supera il max. dichiarato in tabella con la formula, in cella u3 compare il messaggio "limite superato",
    il tutto impostato con la formattazione condizionale.
    A me piacerebbe che quando succede che t3 ha raggiunto un valore superiore al dichiarato, la cella lampeggi.
    Ho trovato una routine che, mi sembra, faccia lampeggiare una cella.Vi allego la routine

    Sub StartBlink()
    Dim xCell As Range
    Dim xTime As Variant
    Set xCell = Range("A1")
    With ThisWorkbook.Worksheets("Sheet2").Range("A1").Font
    If xCell.Font.Color = vbRed Then
    xCell.Font.Color = vbWhite
    Else
    xCell.Font.Color = vbRed
    End If
    End With
    xTime = Now + TimeSerial(0, 0, 1)
    Application.OnTime xTime, "'" & ThisWorkbook.Name & "'!StartBlink", , True
    End Sub

    Causa la mia scarsa programmazione, non riesco a unire la circostanza.
    - come si puo' programmare e unire la situazione che, nel momento in cui non solo la cella t3> del valore in tabella, ma tutto il range (t3:t26), lampeggi.
    - il modulo che bisogna riempire di codice vba, non credo serva un pulsante comando per avviare la macro. Di sicuro Voi tutti saprete in che maniera il programma
    in automatico "genera" l'evento lampeggio.

    Spero di non avervi tediato. E spero di essere stato assai chiaro.
    Grazie a tutti in anticipo.
    saverio
  • di saverio (Utente non iscritto) data: 04/10/2018 17:00:38 



    Spero che si veda tutto bene e chiaro.
    Grazie.
  • torna su

Sostieni Excel VBA con una donazione! Con la tua donazione potrai contribuire al mantenimento del servizio.
Le donazioni sono eseguite con PayPal, il modo più facile, comodo e sicuro per pagare online.
Paypal accetta anche carta di credito o carte prepagate.