Function per msgbox formattata

di il
9 risposte

Function per msgbox formattata

Ciao a tutti

ho trovato questa function nel web

ma non so come richiamarla:

Function CustomMsgBox(BoldPrompt As Variant, Prompt As Variant, _
                   Optional Buttons As VbMsgBoxStyle = vbOKOnly, _
                   Optional Title As Variant = "Message") As VbMsgBoxResult

   CustomMsgBox = Eval("MsgBox ('" & Replace(BoldPrompt, "'", "") & "@" & _
                               Replace(Prompt, "'", "") & "@@'," & Buttons & ",'" & _
                               Replace(Title, "'", "") & "')")
End Function

grazie per l'aiuto

9 Risposte

  • Re: Function per msgbox formattata

    Alberto non sei nuovo perchè non posti il codice formattato con i tag CODE?

    Comunque prova a chiamare la funzione come richiami le funzioni normalmente, passa già argomenti obbligatori e se vuoi quelli opzionali

  • Re: Function per msgbox formattata

    14/10/2024 - oregon ha scritto:


    Alberto non sei nuovo perchè non posti il codice formattato con i tag CODE?

    Comunque prova a chiamare la funzione come richiami le funzioni normalmente, passa già argomenti obbligatori e se vuoi quelli opzionali

    Grazie per la risposta.

    Ok per il msg, ora vorrei aggiungere alla function un temporizzatore, che dopo tot secondi la msgbox si chiude

    Grazie ancora

  • Re: Function per msgbox formattata

    A parte il fatto che questa è un'altra domanda e andrebbe fatta in un altro thread (non siamo in una chat), comunque la strada della MsgBox per fare quello che chiedi è abbastanza tortuosa.

    Ti consiglio di creare un tuo form con tutto quello che ti serve (compreso un timer) per simulare una tua Msgbox 

  • Re: Function per msgbox formattata

    Per fare queste cose, dovresti usare un Form, opportunamente formattata, così puoi gestire quello che vuoi in modo semplice.

    Invece usando gli ACCROCCHI, diventa tutto un problema, e quello è un accrocchio.

    Il Msgbox è una Form Nativa di Windows, di tipo modale, non gestibile, se non provando ad inviare un SendKey con INVIO, e funziona emulando la pressione o il Click sul DefaultButton…, un po come funzionava il ClickYes, tutto questo è decisamente sporco e disfunzionale.

    Se ti fai una bella Maschera la formatti graficamente con un Messaggio, la apri come PopupModale e su Timer di Form la fai chiudere…?

    Serve un piccolo accorgimento per pasarle i Parametri ma non è complesso, ed in ogni caso è completamente gestibile da VBA.

  • Re: Function per msgbox formattata

    15/10/2024 - @Alex ha scritto:


    Per fare queste cose, dovresti usare un Form, opportunamente formattata, così puoi gestire quello che vuoi in modo semplice.

    Invece usando gli ACCROCCHI, diventa tutto un problema, e quello è un accrocchio.

    Il Msgbox è una Form Nativa di Windows, di tipo modale, non gestibile, se non provando ad inviare un SendKey con INVIO, e funziona emulando la pressione o il Click sul DefaultButton…, un po come funzionava il ClickYes, tutto questo è decisamente sporco e disfunzionale.

    Se ti fai una bella Maschera la formatti graficamente con un Messaggio, la apri come PopupModale e su Timer di Form la fai chiudere…?

    Serve un piccolo accorgimento per pasarle i Parametri ma non è complesso, ed in ogni caso è completamente gestibile da VBA.

    grazie Alex

    hai qualche esempio: Serve un piccolo accorgimento per passarle i Parametri ma non è complesso

  • Re: Function per msgbox formattata

    Le maschere aperte in modalità acDialog si sa non sono più accessibili dall'esterno in quanto esse do Modale sospendendo l'esecuzione del codice chiamante.

    Per questo i parametri si possono passare solo durante l'apertura usando OpenArgs come concatenazione di stringhe usando un carattere di separazione e su load si splitta e si gestiscono gli items dell'array come parametri.

    Alternativa usare Public Variable da valorizzare prima di aprire la Form e su load si vanno a leggere…

    Altra possibilità ma forse troppo tecnica, è creare una classe di Parametri e passarla come Puntatore usando OpenArgs, e su load si recupera la classe oggetto usando il Pointer.

    Questa tecnica decisamente più flessibile e potente, è anche più fuori dallo standard VBA.

    Ti suggerirei la 2° ovvero variabili Public.

  • Re: Function per msgbox formattata

    15/10/2024 - @Alex ha scritto:


    Le maschere aperte in modalità acDialog si sa non sono più accessibili dall'esterno in quanto esse do Modale sospendendo l'esecuzione del codice chiamante.

    Per questo i parametri si possono passare solo durante l'apertura usando OpenArgs come concatenazione di stringhe usando un carattere di separazione e su load si splitta e si gestiscono gli items dell'array come parametri.

    Alternativa usare Public Variable da valorizzare prima di aprire la Form e su load si vanno a leggere…

    Altra possibilità ma forse troppo tecnica, è creare una classe di Parametri e passarla come Puntatore usando OpenArgs, e su load si recupera la classe oggetto usando il Pointer.

    Questa tecnica decisamente più flessibile e potente, è anche più fuori dallo standard VBA.

    Ti suggerirei la 2° ovvero variabili Public.

    Grazie Alex, le prime due sono alla mia portata,

    ma se mi dai una mano sono tentato di provare la terza.

  • Re: Function per msgbox formattata

    Io eviterei ObjPtr e classi passate per puntatore per adesso… usa metodi semplici…

  • Re: Function per msgbox formattata

    Concordo… suggerisco nuovamente la 2°.

Devi accedere o registrarti per scrivere nel forum
9 risposte