› Sviluppare funzionalita su Microsoft Office con VBA › Macro che inserisca una freccia su una colonna stabilita e cambi per ogni giorno
-
AutoreArticoli
-
Buongiorno amici del forum,
è da poco che mi sto cimentando con piccole routine per VBA, avrei bisogno sul mio foglio Excel (vedi esempio allegato), di una macro che mi inserisca una freccia (sulla colonna F, poi sulla colonna I e così via), che mi indichi ogni giorno della settimana la colonna dove vanno inseriti i dati inserire i dati.
Grazie.
Massimiliano
Allegati:
You must be logged in to view attached files.Buona sera, @tempusfugit;
consentimi una domanda, per quale motivo nella struttura della Data 22/agosto (Colonna "D") mancano i Campi "fatti" e "anticipi".Chiarito questo dubbio, credo potresti pensare ad avere una "freccia" su ogni Data da nascondere o visualizzare in funzione della scelta operata; anche se personalmente preferirei:
- Nacondere tutte le Date ad esclusione della Data scelta.Voglio dire:
- Un Codice VBA per visualizzare tutta la settimana
- Un Codice VBA per visualizzare solo le tre Colonne della Data scelta.Giuseppe
Buonasera Giuseppe,
la colonna con il sabato serve solo come collegamento alla settimana precedente, quindi in quella colonna io non ci vado a scrivere nulla, il discorso della freccia serve perché a volte per un errore di parallasse sbaglio ad inserire nella cella corretta (ho provato anche con una macro che mi evidenziasse la colonna giusta, ma poi mi va a cambiare tutta la formattazione del foglio.
Grazie come sempre.
Massimiliano
Ciao a tutti.
Puoi utilizzare questo codice da inserire nel modulo del foglio interessato
Private Sub Worksheet_Activate() Dim Cella As Range Dim Lc As Long Lc = Cells(5, Columns.Count).End(xlToLeft).Column For Each Cella In Range(Range("D5"), Cells(5, Cells(5, Columns.Count).End(xlToLeft).Column)) If IsDate(Cella) Then If CDate(Cella) = Date Then Shapes(1).Cut Paste Cella.Offset(1, 1) Exit For End If End If Next Cella End SubDevi inoltre salvare il file in uno dei formati che supportano le macro (xlsx non va bene) cioè xls, xlsm, xlsb.
Il codice viene automaticamente eseguito ogni volta che visualizzi il foglio; il foglio non deve contenere altre immagini, pulsanti e simili.
Ciao Karma,
ho fatto tutti i passaggi ma non funziona nulla!!!
Allegati:
You must be logged in to view attached files.Buona giornata, @tempusfugit.
Consentimi un saluto a @zer0kelvin.Il Codice VBA funziona perfettamente basta impostare le condizioni per farlo funzionare.
- Inserisci la "Freccia" come nel tuo File iniziale; in Colonna "F"
- Il Codice funziona dalla Data 24/agosto/2020 alla Data 30/agosto/2020
- Prova a inserire in Cella "E5" la Data 17-ago; oppure aspetta la prossima settimana
- Considera che "Worksheet_Activate" viene attivato quando il Foglio di lavoro viene attivato; in questo caso servono almeno due Fogli di lavoro.Giuseppe
Ciao Giuseppe,
sempre gentile, ma Excel mi restituisce un errore:"riferimento non valido" e si blocca tutto.
Saluti.
Massimiliano
Molto strano.
Allega il tuo File con le modifiche che ho consigliato in #27280.
Giuseppe
- Considera che "Worksheet_Activate" viene attivato quando il Foglio di lavoro viene attivato; in questo caso servono almeno due Fogli di lavoro.
Ciao @giuseppemn.
Errore mio, ho dato per scontato che l'evento si verificasse anche all'apertura del workbook, ma non è così.
Si potrebbe usare, con qualche modifica al codice, Workbook_Open
Private Sub Workbook_Open() Dim Cella As Range With Sheets("Foglio1") For Each Cella In Range(.Range("D5"), .Cells(5, .Cells(5, Columns.Count).End(xlToLeft).Column)) If IsDate(Cella) Then If CDate(Cella) = Date Then .Shapes(1).Cut .Paste Cella.Offset(1, 1) Exit For End If End If Next Cella End With End Sub@ tempusfugit il codice funziona correttamente; hai inserito, come richiesto, la freccia nel foglio?
Grazie,
ragazzi domani provo e vi faccio sapere, ma è possibile che se io salvo con una versione di Excel (la mia è la 2019) e su un altro pc c'è la 2016 la macro non funzioni? esiste un modo per far si che la macro giri su tutte le versioni di Excel?
Si, è possibile, ma allora il problema non è la macro in sè ma il riferimento a una delle librerie di oggetti.
Ci sono due ipotesi:
1) sul primo pc è presente un programma che ha attivato, alla sua installazione, una sua libreria ad oggetti che risulterà mancante sul secondo pc.
2) (più probabile) la versione più aggiornata di Excel ha abilitato automaticamente la versione più recente di una delle librerie di Office; per esempio
Microsoft Office 16.0 Object Library
che fa parte delle librerie di Office 2019.
Questo renderà il programma VBA incompatibile con le versioni precedenti di Office che hanno la versione meno aggiornata di quella libreria.
In entrambi i casi la soluzione consiste nell'eliminare il riferimento alla libreria non disponibile ma, se si tratta di una delle librerie indispensabili (come quella che ho citato) al funzionamento del VBA, non puoi semplicemente eliminare il riferimento, devi sostituirlo con un riferimento alla analoga libreria della versione meno aggiornata di office.
Fai questo:
- apri il file con la versione meno aggiornata di Excel
- se il VBA è bloccato clicca sul pulsante "ripristina" (il quadratino blu sulla barra degli strumenti)
- in VBA vai nel menù Strumenti e clicca su Riferimenti; a destra di una o più voci vedrai la scritta [Manca]
- se si tratta di librerie non comprese in questo elenco:
Visual Basic For Application
Microsoft Excel xx.0 Object Library
Microsoft Office xx.0 Object Library
OLE Automation
puoi semplicemente togliere il segno di spunta, salvare e chiudere il file
- in caso contrario devi cercare nell'elenco le due librerie
Microsoft Excel 14.0 Excel Library
Microsoft Office 14.0 Object Library
e togliere la spunta a quelle mancanti.
Le librerie 14.0 sono quelle di Office 2010, ma le funzionalità offerte dovrebbero essere identiche.
Buongiorno Karma,
il file non si è aggiornato è rimasto alla data di venerdì 21 agosto 🙁
Allegati:
You must be logged in to view attached files.Credo debba essere tu ad aggiornarlo manualmente modificando la data in Cella "E5".
Giuseppe
Ciao Giuseppe,
ma scusa la giornata di sabato non è contemplata nel range delle date?
Buon pomeriggio, @tempusfugit.
@tempusfugit in #27308, scrive:
... ma scusa la giornata di sabato non è contemplata nel range delle date?Forse non ho capito il problema ma se la Data del Sabato presente in "D5" è corretta, in "E5" puoi srivere: =$D$5+2
O mi sbaglio?
Giuseppe
Buonasera Giuseppe,
forse mi sono spiegato male, aprendo il foglio oggi che é sabato 22 agosto, la freccia rimane sul giorno 21!
Buon pomeriggio, @massimiliano.
@massimiliano in #27316, scrive:
... aprendo il foglio oggi che é sabato 22 agosto, la freccia rimane sul giorno 21!È strano, a me non accade; non vorrei insistere ma allega il tuo File e posso/possiamo chiarire l'arcano.
Buon fine settimana.
Giuseppe
Salve a tutti
Nella macro non è indicato il Foglio "Viaggi" bensì "Foglio1" e, pertanto, il foglio non si aggiorna.
Ciao,
Mario
Buona sera, @massimiliano;
al di là del nome del Foglio di lavoro, a mio modesto parere, ci sono discrepanze ben più gravi.Non mi è chiara il contenuto della Cella "C3":
Settimana 29
che non ha alcuna attinenza con le Date proposte.
Credo che dovrebbe essere:
Settimana 34Per evitare refusi andrebbe calcolata.
Sarebbe utile calcolare anche la Data del "primo Lunedì della settimana corrente".Ciò premesso, consentimi di proporre la mia proposta iniziale; all'apertura del File viene visualizzata solo la Data del giorno corrente, vedi immagine in allegato.
In questo modo non avresti più bisogno di alcuna "freccia" ma solo di un Codice VBA che, volendo, consenta di visualizzare l'intera settimana.Buona serata.
Giuseppe
Allegati:
You must be logged in to view attached files.Buongiorno Giuseppe,
con la diritta di Mario, ora funziona, ho messo anche la funzione =NUM.SETTIMANA(E5), per calcolare la settimana in modo automatico al cambio del valore nella cella E5, purtroppo a me servono visualizzate tutte le date della settimana perché i viaggi possono cambiare.
In allegato il file funzionante.
Saluti.
Massimiliano
Allegati:
You must be logged in to view attached files. -
AutoreArticoli
