Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel Macro

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel Macro

Postdi Moonspell74 » 17/08/12 14:53

Salve a tutti,

avrei bisogno di un aiuto per creare una macro che mi permetta di "avvisarmi" con un beep acustico o con un msgbox
quando su una cella o un insieme di celle si verifica la condizione "data e ora attuale".

nel mio caso per rendere meglio l' idea avrei:
colonna C : data ed ora di arrivo
colonna D: tempo di trasporto ( HH:MM:SS)
colonna E: data ed ora di partenza

la colonna E è determinata dal calcolo C-D.
Quindi avrei necessità che se ad esempio su una cella della colonna E si ha come risultato 18/08/2012 16:00, al verificarsi di quella data ed ora venga appunto avvisato con un messaggio o un beep.

Grazie, spero di essere stato chiaro... :)
Moonspell74
Newbie
 
Post: 6
Iscritto il: 16/08/12 10:18

Sponsor
 

Re: Excel Macro

Postdi Flash30005 » 17/08/12 15:58

Ciao Moonspell74 e benvenuto nel Forum

Una buona macro che svolge la funzione di controllo la puoi trovare in questa discussione
http://www.pc-facile.com/forum/viewtopic.php?f=26&t=94739&hilit=timer+a+tempo

Poi la devi adattare alle tue esigenze (l'ho fatto io per te), ho preferito il beep al messaggio perché il secondo avrebbe avuto bisogno dell'ok per proseguire
Codice: Seleziona tutto
Private Declare Function Beep Lib "kernel32" (ByVal dwFreq As Long, ByVal dwDuration As Long) As Long

Sub CalcolaDeltaT()
CntSh = "Foglio1"     '<<<
StopS = "Z1"
If ThisWorkbook.Sheets(CntSh).Range(StopS).Value <> "" Then Exit Sub
Calculate
UR = Sheets(CntSh).Range("E" & Rows.Count).End(xlUp).Row
For RR = 2 To UR
If Sheets(CntSh).Range("E" & RR) - Now() < 0 Then
    If Sheets(CntSh).Range("F" & RR).Value = "" Then Beep 2000, 1000
    Sheets(CntSh).Range("F" & RR).Value = 1
Else
    Application.OnTime Now + TimeValue("00:01:00"), "CalcolaDeltaT"
End If
Next RR
End Sub


Fai attenzione perché utilizzo la colonna F per inserire un check (1) se in quella cella c'è una data/orario inferiore all'attuale (già testata) altrimenti avresti un Beep ogni volta che il ciclo for next ricontrolla i tempi scaduti

Inoltre come specificato dalla discussione linkata per fermare la macro è suffciente scrive qualsiasi cosa nella cella Z1

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Macro

Postdi Moonspell74 » 17/08/12 16:23

Grazie gentilissimo e solertissimo! :)

stasera la provo e poi ti faccio sapere..
e grazie per il benvenuto
Moonspell74
Newbie
 
Post: 6
Iscritto il: 16/08/12 10:18

Re: Excel Macro

Postdi Moonspell74 » 23/08/12 09:01

ciao Flash,
scusa se rispondo solo ora.
Ho avuto modo di testare la macro ma, ahimè, non funziona.
Ti dico subito che non sono molto pratico con le macro ma ho riportato esattamente quanto scritto sopra.
facendo un test sulla macro mi evidenzia la stringa " if ThisWorkbook.Sheets(CntSh).Range(StopS).Value <> "" Then ".

Se ti può essere d' aiuto potrei inviarti il mio excel così puoi verificare sullo stesso se c'è qualche problema, sempre ovviamente secondo la tua disponibilità.

Grazie ancora!!
Moonspell74
Newbie
 
Post: 6
Iscritto il: 16/08/12 10:18

Re: Excel Macro

Postdi Flash30005 » 23/08/12 10:00

Si, ok
invia pure il file
(segui la procedura indicata nel secondo Topic di questa sezione)

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Macro

Postdi Moonspell74 » 23/08/12 10:21

Moonspell74
Newbie
 
Post: 6
Iscritto il: 16/08/12 10:18

Re: Excel Macro

Postdi Flash30005 » 23/08/12 13:59

La macro andava inserita in un modulo
Inoltre c'era una errata distribuzione dei dati
Nel primo post diceve che occupavi le colonne C,D,E ed invece hai occupato le colonne D,E,F
Inoltre il foglio non si chiama "foglio1" ma "Calcolo Tempistica"

Insomma non poteva funzionare
Ti invio il file (si attiva all'apertura e ogni minuto effettua il test orario partenza
http://uploading.com/files/get/8139md6m/TEST%2BVIAGGIO2.xls

Provalo e fai sapere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Macro

Postdi Moonspell74 » 24/08/12 09:12

Provato e funziona perfettamente! grazie Flash :)

Avrei però da farti alcune domande, per curiosità personale e per migliorare alcuni aspetti:

1) ho letto da qualche parte che è possibile utilizzare file wav al posto del beep di sistema con la funzione sndPlaySound32 attingendo dalla cartella C:\Windows\Media, è fattibile?
2) E' possibile abbinare al beep (o al suono se il punto 1 è fattibile) anche la finestra di avviso Msgbox?
3) Si può decidere la durata del suono e la finestra di avviso?
4) quei mark che mi escono sulla colonna G ( gli "1" in rosso) qual'è la loro utilità? si possono disattivare?

Grazie infinite per l' aiuto, la macro così com'è soddisfa già la mia richiesta!! ;)
Moonspell74
Newbie
 
Post: 6
Iscritto il: 16/08/12 10:18

Re: Excel Macro

Postdi Flash30005 » 24/08/12 10:48

I valori che vedi impostati nel Beep sono frequenza, durata (in millisecondi) quindi
Beep 2000, 1000 significa frequenza 2Khz per 1 secondo
Puoi variare questi valori
per quanto riguarda il file wav suppongo che si possa fare, non ho mai approfondito perché non ne ho mai avuto necessità
Il messaggio, come dicevo, blocca la macro fino a che non si preme Ok quindi, a secondo dei casi, può essere deleterio ma se vuoi modifica la condizione (che era solo con Beep) aggiungendo il messaggio
Codice: Seleziona tutto
    If Sheets(CntSh).Range("F" & RR).Value = "" Then
    Beep 2000, 1000
    MsgBox Now()
    End If

Si potrebbe pensare di utilizzare una userform che appare e dopo una certa durata scompaia...

Per quanto riguarda i mark in colonna G, sono necessari in quanto senza avresti ogni volta una segnalazione anche per le scadenze passate. Se non vuoi vedere i mark nascondi la colonna oppure se quella colonna è occupata da altri dati cambia il riferimento della colonna G in una colonna libera del foglio.

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel Macro

Postdi Moonspell74 » 24/08/12 10:52

Tutto molto chiaro, grazie mille sei stato gentilissimo :)

alla prossima!
Moonspell74
Newbie
 
Post: 6
Iscritto il: 16/08/12 10:18


Torna a Applicazioni Office Windows


Topic correlati a "Excel Macro":


Chi c’è in linea

Visitano il forum: Nessuno e 12 ospiti