Condividi:        

[VBA] CHIUDERE MSGBOX

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

[VBA] CHIUDERE MSGBOX

Postdi yield.pm » 16/04/11 10:10

Buongiorno a tutti,
ho un file da cui richiamo e gestisco altri file. Nei file richiamati a volte si aprono delle finestre di avviso (msgbox) e quindi tutta la procedura si ferma fino al mio click per chiudere la finestra. Vorrei poter evitare l'interruzione dicendo al codice che nel caso si apra una finestra di avviso di chiuderla automaticamente. Si può fare?
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Sponsor
 

Re: [VBA] CHIUDERE MSGBOX

Postdi PcBase » 16/04/11 12:11

Ciao

Prova ad inserire ad inizio codice:

Application.DisplayAlerts = False
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 16/04/11 12:44

PcBase ha scritto:Ciao

Prova ad inserire ad inizio codice:

Application.DisplayAlerts = False

ciao PcBase,
no cosi non funziona... Cerco di spiegare meglio
Da un File A apro ed eseguo altri file (file1-file2-file3-ect).... alla fine dell'esecuizione del file1 o seguenti può succedere che si apra una finestra di msgbox, quindi bisogna mettere un codice nel FILEA che, qualora file1 o seguenti a fine esecuzione aprano una finestra questa venga chiusa per non interrompere il codice presente nel FILEA.
Grazie del suggerimento :)
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi PcBase » 16/04/11 12:54

ciao

Puoi inviare un esempio eventualmente come MP
Non se ne esce altrimenti
Windows xp + Office 2003 Ita
Windows8 Office 2013
PcBase
Utente Senior
 
Post: 143
Iscritto il: 24/02/11 23:26

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 16/04/11 13:19

Troppo complicato mettere su un esempio....
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 16/04/11 13:21

Io credo che non bisogna dirgli di non aprire la finestra di msgbox ma di chiuderla nel caso si apra.
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi Anthony47 » 16/04/11 22:19

Non puoi chiudere un msgbox, eventualmente dovresti usare una userform che si chiude automaticamente dopo N secondi. Una richiesta analoga e' discussa qui: viewtopic.php?f=26&t=58738 (ipotesi 3).

Oppure potresti inserire nel flusso delle tue macro un flag pubblico che viene compilato con un valore predeterminato dalla MacroA quando chiama MacroB; poi in MacroB sondi quel flag ed eventualmente eviti il msgbox.

Sono spunti da adattare allla tua situazione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 17/04/11 08:42

userform è una soluzione che non mi è molto gradita... altre possiblità ne esistono?
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 17/04/11 10:31

Ci ho ripensato, può essere una buona soluzione.... mi serve un piccolo aiutino però.... io ho messo su questo codice:

Private Sub AttivaUserform()
Dim pausetime, start, finish
pausetime = 10
start = Timer
Do While Timer < start + pausetime
DoEvents
UserForm1.Show vbModeless
Loop
finish = Timer
UserForm1.Hide
End Sub

Dopo 10 secondi la finestra si chiude, se però provo a chiuderla io cliccando sulla X in alto a destra, anzichè chiudersi, il testo sparisce e viene fuori la scritta LABEL1... vorrei poterla chiudere anche a mano, è possibile?
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 17/04/11 11:11

Già che ci sono... è possibile cambiare da codice il colore del testo della label1?
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi Anthony47 » 17/04/11 13:19

Ci ho ripensato, può essere una buona soluzione....
Infatti non te l' avevo proposta solo per farti un dispetto :D :D

La macro e' errata, perche' l' istruzione UserForm1.Show e' all' interno del loop; quindi se chiudi la form un microsecondo dopo la riapri. Modifica cosi':
Codice: Seleziona tutto
Private Sub AttivaUserform()
Dim pausetime, start, finish
pausetime = 10
UserForm1.Show vbModeless
start = Timer
Do While Timer < start + pausetime
DoEvents
Loop
finish = Timer
UserForm1.Hide
End Sub

"finish" serve a qualcosa?

Per il colore della scritta, torna in edit della userform, seleziona la label, visualizza le sue proprieta' (Menu /Visualizza /Proprieta'); cerca la voce ForeColor, scegli un colore dall' elenco disponibile, o scrivi il colore che preferisci scrivendo una stringa del tipo "&H00BBGGRR&" (senza virgolette), dove RR (Red), BB (Blu) e GG (Green) possono assumere un valore da 00 (minimo) a FF (massima intensita').

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [VBA] CHIUDERE MSGBOX

Postdi yield.pm » 17/04/11 13:29

Grande Anthony, tutto risolto! Grazie mille, ciao
yield.pm
Utente Junior
 
Post: 45
Iscritto il: 21/11/10 19:55

Re: [VBA] CHIUDERE MSGBOX

Postdi Avatar3 » 18/04/11 10:08

Per coloro che non gradissero le userform (anche se esteticamente più belle di ciò che andrò a prospettare)
c'è la possibilità di far aprire una finestra di IE (dimensionabile e posizionabile ovunque sullo schermo) con questo codice

Codice: Seleziona tutto
Sub ProvaFinestra()
        Set MYie = CreateObject("InternetExplorer.Application")
        MYie.Navigate "about:blank"
        MYie.Toolbar = False: MYie.StatusBar = False: MYie.Resizable = False
        Do
        Loop While MYie.Busy
        MYie.Width = 300: MYie.Height = 100
        MYie.Left = 50: MYie.Top = 50
        MYie.Visible = True
        MYie.document.writeln ("<html><title></title><body><div id='cont'></div></body></html>")
        Set IEWindow = MYie.document.All("cont")
        IEWindow.INNERHTML = "Attendere ..."
        '<<<< inserire la routine oppure un tempo come riportato nella riga successiva
        Application.Wait (Now() + TimeValue("00:00:05"))
        On Error Resume Next
        MYie.Quit
        On Error GoTo 0
End Sub


Ciao
Per il funzionamento delle macro si deve impostare la protezione a Bassa o Media.
Menu Strumenti -> Macro -> Protezione...
Avatar utente
Avatar3
Utente Senior
 
Post: 569
Iscritto il: 04/04/11 09:04


Torna a Applicazioni Office Windows


Topic correlati a "[VBA] CHIUDERE MSGBOX":


Chi c’è in linea

Visitano il forum: Nessuno e 48 ospiti