Formattazione condizionale con suono

Anonimo
2017-03-06T18:25:57+00:00

In Excel 2010 vorrei che quando una formattazione condizionale risulta "VERO", sia restituito un suono, per esempio un beep, contemporaneamente al colore prescelto. Come fare? Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

15 risposte

Ordina per: Più utili
  1. Anonimo
    2017-03-07T14:01:51+00:00

    Ciao Aldo,

    Benvenuto alla Community!

    In Excel 2010 vorrei che quando una formattazione condizionale risulta "VERO", sia restituito un suono, per esempio un beep, contemporaneamente al colore prescelto. Come fare? .

    Sfortunatamente, un cambiamento di colore generata dalla formattazione condizionale non scatta un evento Excel e, di conseguenza, non c'è modo direttamente per intercettare tale cambiamento.

    Tuttavia, a seconda delle regole della formattazione condizionale e l'eventuale formula nelle celle di interesse, potrebbe essere possibile sfruttare l'evento Worksheet_Change per riprodurre suoni.

    Quindi, ti chiederei gentilmente di caricare un esempio del file, dopo averlo depurato dei dati sensibili, su un servizio di condivisione di file, per esempio MicrosoftOneDrive o DropBox, e postare un link al file in una risposta qui.

    Per caricare il file su Microsoft OneDrive, vedi:

    https://support.office.com/it-it/article/Condividere-file-e-cartelle-di-OneDrive-9fcc2f7d-de0c-4cec-93b0-a82024800c07

    Nel caso di DropBox, vedi:

    https://www.dropbox.com/it/help/topics/sharing_files_and_folders

    ===

    Regards,

    Norman

    La risposta è stata utile?

    1 persona ha trovato utile questa risposta.
    0 commenti Nessun commento
  2. Anonimo
    2017-03-14T11:46:23+00:00

    Ciao Aldo,

    Ti ringrazio tantissimo per la risposta ed il codice fornito.

    Prego!

    Sono sicuro di essere sulla strada giusta; tuttavia ho ancora bisogno di Te perché vorrei porre alla tua attenzione due problemi:

    1. In foglio 1 (codice) ho modificato così:

    Const  sIntervalloFormule As String = "QW111:QW151"                '<<=== Modifica

        Const sWavFile As String = _

                 "C:\Users\Aldo\Music\Musica_wav\Applausi_1.wav"        '<<=== Modifica

    E’ giusto?

    Sì, purché le formule di interesse si trovino nell'intervallo QW111:QW151 e che il file Applausi_1.wav si trovi nella cartella C:\Users\Aldo\Music\Musica_wav

    1. In modulo 1 (codice), la scritta Else forse è errata perchè appare di colore rosso, ed è questa:

    #Else

        Private Declare Function PlaySound Lib "winmm.dll" _

                 Alias "PlaySoundA" (ByVal lpszName As String, _

                      ByVal hModule As Long, _

                            ByVal dwFlags As Long) _

                                    As Long

    E’ giusta?

    Sì! Per assicurarsi che il codice possa funzionare sia con  la versione VB6  che VB7, ho sftruttato la cosiddetta compilazione condizionale: Nel caso di VB7,  l primo comando 

    #If VBA7 And Win64 Then

    Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _

    Alias "PlaySoundA" (ByVal lpszName As String, _

    ByVal hModule As LongPtr, _

    ByVal dwFlags As LongPtr) _

    As Long

    sarà eseguita e il comando alternativo

    #Else

    Private Declare Function PlaySound Lib "winmm.dll" _

    Alias "PlaySoundA" (ByVal lpszName As String, _

    ByVal hModule As Long, _

    ByVal dwFlags As Long) _

    As Long

    sarà evidenziato in rosso, e viceversa.  Questo è del tutto normale e non dovresti preoccuparti! A questo proposito, se io utilizzassi VB6, vedrei:

    Ho salvato regolarmente il file con l’estensione xlsm, ma sembra non funzionare. Puoi gentilmente dirmi dove ho sbagliato e qual è la soluzione corretta alla luce delle nuove informazioni?

    l'indirizzo dell'intervallo e il percorso del file wav devi verificare tu e, a patto che siano corretti, non dovrebbero essere influenti.  

    Pertanto, prova a:

    • Sostituire il file wav con degli altri  - pare che tutti i file non funzionino per motivi sconosciuti.
    • Caricare il file Applausi_1.wav su un servizio di condivisione di file, per esempio Microsoft OneDrive o DropBox, e posta un link al file in una risposta qui. In questo modo posso provarlo con la mia configurazione
    • Verificare che la procedura Worksheet_Change sia stati inserito nel modulo di codice del foglio di interesse e che l'atro codice sia in un modulo di codice standard.
    • Carica il file, dopo averlo depurato dei dati sensibili, e posta un link al file

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-03-14T09:52:50+00:00

    Ciao Norman David Jones,

    Ti ringrazio tantissimo per la risposta ed il codice fornito. Sono sicuro di essere sulla strada giusta; tuttavia ho ancora bisogno di Te perché vorrei porre alla tua attenzione due problemi:

    1. In foglio 1 (codice) ho modificato così:

    Const  sIntervalloFormule As String = "QW111:QW151"                '<<=== Modifica

        Const sWavFile As String = _

                 "C:\Users\Aldo\Music\Musica_wav\Applausi_1.wav"        '<<=== Modifica

    E’ giusto?

    1. In modulo 1 (codice), la scritta Else forse è errata perchè appare di colore rosso, ed è questa:

    #Else

        Private Declare Function PlaySound Lib "winmm.dll" _

                 Alias "PlaySoundA" (ByVal lpszName As String, _

                      ByVal hModule As Long, _

                            ByVal dwFlags As Long) _

    As Long

    E’ giusta?

    Ho salvato regolarmente il file con l’estensione****xlsm, ma sembra non funzionare. Puoi gentilmente dirmi dove ho sbagliato e qual è la soluzione corretta alla luce delle nuove informazioni?

    Grazie, resto in attesa

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2017-03-12T01:00:46+00:00

    Ciao Aldo,

    Scusatemi, forse non ho formulato bene la mia domanda. Intendevo riferirmi all'inserimento di un opportuno codice Visual Basic con condizione, probabilmente IF condizione THEN, ELSE, rispetto ad un determinato RANGE. Spiego meglio cosa vorrei ottenere, precisando che il programma di cui dispongo è Excel 2010 e che il sistema operativo è Windows 7 Professional a 64 bit.

    In un file Excel l' impostazione iniziale prevede, dalla cella D1 alla cella D41, l'inserimento di 41 formule "E" che, ognuna nel proprio rigo, restituisce risultato "VERO", quando tutte le formule "SE" collegate, restituiscono "VERO". Quindi:

    In D1, il risultato della formula "E" è "VERO", se tutte le formule "SE" collegate restituiscono "VERO";

    In D2, il risultato della formula "E" è "VERO", se tutte le formule "SE" collegate restituiscono "VERO";

    In D3, il risultato della formula "E" è "VERO", se tutte le formule "SE" collegate restituiscono "VERO";

    Così via per tutti i 41 righi.

    Attraverso l'inserimento di adeguato codice Visual Basic vorrei:

    l'emissione di un beep di sistema o l'apertura di un file sonoro con formato .wav, residente in Hard-disk, sfruttando Playsound, tutte le volte che le celle da D1 a D41 restituiscono "VERO". 

    Vi ringrazio la cortesia e per la disponibilità che vorrete dimostrare.

    Prova qualcosa del genere:

    • Fai clic dx sulla linguetta del foglio di interesse
    • Seleziona l'opzione Visualizza Codice dal **** menu contestuale risultante
    • Incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

        Dim Rng As Range, Rng2 As Range, Rng3 As Range, Rng4 As Range

        Dim arrOld As Variant, arrNew As Variant, arrNew2 As Variant

        Dim i As Long

        Dim bFlag As Boolean

        Const sIntervalloFormule As String = "D1:D41"               '<<=== Modifica

        Const sWavFile As String = _

                 "C:\Windows\Media\Windows Ringout.wav"        '<<=== Modifica

        Set Rng = Me.Range(sIntervalloFormule)

        On Error Resume Next

        Set Rng2 = Rng.Precedents

        Set Rng3 = Intersect(Rng2, Target)

        On Error GoTo 0

        If Not Rng3 Is Nothing Then

            Set Rng4 = Intersect(Rng3.Dependents, Rng)

        End If

        If Not Rng4 Is Nothing Then

            arrNew = Rng3.Formula

            arrNew2 = Rng.Value

            On Error GoTo XIT

            With Application

                .EnableEvents = False

                .Undo

            End With

            With Rng

                arrOld = .Value

                .Interior.ColorIndex = xlNone

                For i = 1 To UBound(arrOld)

                    If arrOld(i, 1) = False And arrNew2(i, 1) = True Then

                        bFlag = True

                        .Cells(i).Interior.Color = vbRed

                    End If

                Next i

            End With

        End If

    XIT:

        Rng3.Formula = arrNew

        If bFlag Then

            For i = 1 To 2

                Call DingDong(sWavFile)

            Next i

        End If

        Application.EnableEvents = True

    End Sub

    '<<=========

    • Alt+F11 per aprire l'editor di VBA
    • Alt+IM per inserire un nuovo modulo di codice
    • Nel nuovo modulo vuoto, incolla il seguente codice:

    '=========>>

    Option Explicit

    '--------->>

    #If VBA7 And Win64 Then

        Private Declare PtrSafe Function PlaySound Lib "winmm.dll" _

                Alias "PlaySoundA" (ByVal lpszName As String, _

                      ByVal hModule As LongPtr, _

                            ByVal dwFlags As LongPtr) _

                                    As Long

    #Else

        Private Declare Function PlaySound Lib "winmm.dll" _

                 Alias "PlaySoundA" (ByVal lpszName As String, _

                      ByVal hModule As Long, _

                            ByVal dwFlags As Long) _

                                    As Long

    #End If

    '--------->>

    Public Sub DingDong(sFile)

        PlaySound sFile, &H0, &H8

    End Sub

    '<<========= 

    • Alt+Q per chiudere l'editor di VBA e tornare a Excel
    • Salva il file con l’estensione xlsm

    Potresti scaricare il mio file di prova  Aldo20170312 a:

    https://www.dropbox.com/s/wkr55s51khnhq9e/Aldo20170312.xlsm?dl=0

    ===

    Regards,

    Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  5. Anonimo
    2017-03-11T18:36:07+00:00

    Scusatemi, forse non ho formulato bene la mia domanda. Intendevo riferirmi all'inserimento di un opportuno codice Visual Basic con condizione, probabilmente IF condizione THEN, ELSE, rispetto ad un determinato RANGE. Spiego meglio cosa vorrei ottenere, precisando che il programma di cui dispongo è Excel 2010 e che il sistema operativo è Windows 7 Professional a 64 bit.

    In un file Excel l' impostazione iniziale prevede, dalla cella D1 alla cella D41, l'inserimento di 41 formule "E" che, ognuna nel proprio rigo, restituisce risultato "VERO", quando tutte le formule "SE" collegate, restituiscono "VERO". Quindi:

    In D1, il risultato della formula "E" è "VERO", se tutte le formule "SE" collegate restituiscono "VERO";

    In D2, il risultato della formula "E" è "VERO", se tutte le formule "SE" collegate restituiscono "VERO";

    In D3, il risultato della formula "E" è "VERO", se tutte le formule "SE" collegate restituiscono "VERO";

    Così via per tutti i 41 righi.

    Attraverso l'inserimento di adeguato codice Visual Basic vorrei:

    l'emissione di un beep di sistema o l'apertura di un file sonoro con formato .wav, residente in Hard-disk, sfruttando Playsound, tutte le volte che le celle da D1 a D41 restituiscono "VERO". 

    Vi ringrazio la cortesia e per la disponibilità che vorrete dimostrare.

    La risposta è stata utile?

    0 commenti Nessun commento