› Excel e gli applicativi Microsoft Office › Creare agenda in excel (2016)
-
AutoreArticoli
-
Ciao a tutti,
vorrei porvi un quesito..
Sarebbe possibile creare un'agendina in una userform?
In una userform ho un commandbutton e delle textbox; nelle textbox inserisco data (txt1) e testo (txt2), il commandbutton mi trasferisce i dati nel foglio attivo.
Se fosse possibile, vorrei inserire un'agenda in questa userform (attivabile da commandbutton) così che possa visionare all'occorrenza quando mi scade un dato valore (txt2).
Esempio: txt1 inserisco 20/08/2019 e txt2 inserisco "appuntamento dal medico" >> in agenda, nello spazio del 20/08/2019 esce "appuntamento dal medico". Arriva il giorno, apro l'userform, clicco sul button che apre l'agenda e mi compare un messaggio che cita "hai un appuntamento per oggi".
Avete qualche suggerimento su come procedere?
Vi ringrazio in anticipo per la disponibilità e buona continuazione
Credo che non dovresti premere un pulsante per fare il controllo, dovresti lasciare che sia fatto in automatico all'attivazione dell'userform, nel suo evento Initialize quindi devi confrontare le date memorizzate nella colonna delle date del foglio Excel e mostrare l'avviso quando torva la data corrispondente a quella odierna.
Ho capito, ma non so come procedere sinceramente.
Daresti qualche suggerimento per andare avanti?
Purtroppo c'è un ma...e sarebbe che sia la data e sia l'altro valore vengono trasferiti su un altro foglio (ho sbagliato a scrivere foglio attivo, scusami tanto)..
Mi sentirei di chiederti una cosa: perchè non collegarlo a un pulsante? Sarebbe comodo visualizzare l'agenda al click..o no? Avresti qualche esempio tra le tue scartoffie, giusto per vedere come è strutturata la cosa?
Scusa per le mie continue domande, ma la curiosità a volte prevale
perchè non collegarlo a un pulsante? Sarebbe comodo
No no era tanto per pensare ad alta voce. Sei tu che disegni l'interfaccia e sei tu che sai meglio di chiunque altro come deve essere guidato l'utente. E' che a volte si danno suggerimenti alternativi solo dettati dall'esperienza 🙂
vengono trasferiti su un altro foglio
Non è un problema purchè sia raggiungibile (cioè sia sempre nota e certa la locazione del file).
Daresti qualche suggerimento per andare avanti?
Tra poco devo scappare e non è giusto verso di te buttare giù codice affrettato... ma il succo è (alla pressione del pulsante, quindi), fai un Find sulla colonna che contiene le date per cercare la data odierna, se la trovi mostri l'avviso, altrimenti prosegui normalmente.
Qualcosa del genere, dove in colonna D ci sono le date:
dim f as range set f = range("D:D").find(date, lookat:=xlwhole) if not (f is nothing) then 'data trovata! msgbox "Attenzione, oggi hai un impegno!" else msgbox "Benvenuto nel programma! Per oggi nessun impegno programmato!" end ifSe le date sono su un workbook esterno puoi aprirlo in modo nascosto, controllarne il range qualificandolo per esteso, tipo:
set f = workbooks("c:\...\datafile.xlsx").worksheets("foglio1").range("D:D").find(date, lookat:=xlwhole)Come vedi tutto molto grezzo, bisognerebbe avere qualcosa su cui lavorare 🙂
Ciao,
Come vedi tutto molto grezzo, bisognerebbe avere qualcosa su cui lavorare
hai ragione, scusami ho la testa tra le nuvole (causa ferie in arrivo
). Ho provato la tua soluzione ed è moooolto buona (buono a sapersi il metodo Find, così non costruisco l'userform e non appesantisco il file). Si può implementare ulteriormente il codice? Nel senso che si mi appare il messaggio, ma vorrei che mi apparisse anche il valore accanto.Nel file, colonna B ci sono le date, in A ci stanno vari valori. Vorrei che uscisse oltre al messaggio "Attenzione, oggi hai un impegno!" (data trovata) anche il valore accanto "Appuntamento8" (nel file è evidenziato, ma non deve uscire evidenziato, ma solo il messaggio)
Allego file e grazie mille per tutto l'aiuto!
Allegati:
You must be logged in to view attached files.Ciao
Indegnamente sostituisco Vecchio frac (che saluto caramente)
Aggiungi quello che ti ho segnato nella macro associata a CommandButton3
`Private Sub CommandButton3_Click() Dim f As Range Set f = Range("B:B").Find(Date, lookat:=xlWhole) If Not (f Is Nothing) Then 'data trovata! r = f.Row 'aggiunta MsgBox "Attenzione, oggi hai un impegno!" & vbLf & Cells(r, 1) 'modifica Else MsgBox "Benvenuto nel programma! Per oggi nessun impegno programmato!" End If End Sub`Fai sapere. Ciao,
Mario
Indegnamente sostituisco Vecchio frac
ma daiAccanto all'indicazione di Supermario aggiungo che si può utilizzare Offset applicato all'oggetto "f" che rappresenta la cella in cui è stata trovata la data odierna. Se tale cella è in colonna B, l'istruzione f.Offset(, -1) restituisce il valore della cella a sinistra di quella trovata. Così, intendo, risparmio la variabile r (sai che risparmio
)Buongiorno a tutti,
Marius44 la soluzione che hai proposto è la migliore in quanto rispecchia alla grande le mie esigenze. Grazie mille
Vecchio Frac grazie mille anche a te per il codice e l'alternativa per l'uso per una cartella esterna
Come sempre siete gentilissimi e posso solo augurarvi buone vacanze e buon lavoro (per chi come me aspetta le ferie
)Saluti a tutti
Come non detto... se provo a inserire il codice per poter trovare una data da un file esterno mi esce un messaggio "Subscript out of range" e mi evidenzia questa parte:
Set f = Workbooks("C:\Users\pippo\OneDrive\Desktop\FileEsterno.xlsx").Worksheets("Sheet1").Range("C:C").Find(Date, lookat:=xlWhole)Eppure il file esterno è aperto
Eppure il file esterno è aperto
Se il file esterno è aperto ti basta il nome.
L'assegnazione a una variabile Workbook si fa per aprirlo e tenerne un riferimento in memoria. Tipo:
dim wb as workbook dim f as range set wb = workbooks.Open("c:\users\pippo\desktop\fileesterno.xlsx") set f = wb.worksheets("foglio1").range("B:B").find("cosa sto cercando?", lookat:=xlwhole) if not f is nothing then 'se trovato... msgbox f.offset(, 3) '...visualizza il contenuto della cella in colonna E, stessa riga end ifMi stava prendendo un colpo..
Ho modificato in questo modo e ora va che è una meraviglia.
Set wb = Workbooks("FileEsterno.xlsx")Il resto l'ho lasciato invariato.
Grazie mille e buona continuazione. 🙂
Sto avendo problemi uno dopo l'altro. Sto impazzendo.
Gentilmente dareste un'occhiata a questi due file? La motivazione è che mi prende i valori del foglio attivo e non della cartella esterna. Ho specificato tutte le variabili ma niente.
Il file da cui cercare è "Test1".
Scusatemi tanto per il disturbo
e grazie a chi risponderà.Allegati:
You must be logged in to view attached files.Nel file "Test1-1" dovete aggiungere queste righe:
Dim wb As Workbook Set wb = Workbooks("Test2.xlsm") Set f = wb.Worksheets("Sheet1").Range("B:B").Find(Date, lookat:=xlWhole)Alla fine ho risolto aggiungendo questo alle celle:
wb.Worksheets("Sheet1")Scusate ancora..
Mi spiace non ho potuto seguire gli ultimi sviluppi. Ma se hai risolto sono contento, bravo
-
AutoreArticoli
