aprire un MSGBOX secondo il risultato di una formula

Anonimo
2023-04-27T18:41:54+00:00

Buonasera a tutti,

volevo chiedere quanto segue:

in un foglio excel in A1 c'è il risultato di una formula e anche in A2 c'è il risultato di un'altra formula.... Qual' ora il valore in A1 risulti maggiore di quello in A2 vorrei che si aprisse un msgbox con una nota "attenzione"

é possibile?

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
Risposta accettata dall'autore della domanda
Anonimo
2023-04-28T22:51:29+00:00

Ciao Andrea,

ciao Norman ho provato e va bene anche la seconda versione, ti chiedo un'altra cosa, siccome il foglio ha una password ,devo rimuoverla per far funzionare la macro, so che c'è un codice che disattiva la password e dopo la riattiva....

Purtroppo, come hai scoperto, la proprietà Range.Precedents non funziona su un foglio protetto.

Per ovviare a questo problema, sostituisci il codice esistente con la seguente versione:

'========>>

Option Explicit

'-------->>

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rng1 As Range, Rng2 As Range, Rng3 As Range, Rng4 As Range 

Const sCella As String = **"A1"**                             **'<<=== Modifica** 

Const sCella2 As String = **"A2"**                           **'<<=== Modifica** 

Const sPassword As String = **"Pippo"                '<<=== Modifica** 

With Me 

    .Unprotect Password:=sPassword 

    Set Rng1 = .Range(sCella) 

    Set Rng2 = .Range(sCella2) 

    On Error Resume Next 

    Set Rng3 = Intersect(Target, Rng1.Precedents) 

    Set Rng4 = Intersect(Target, Rng2.Precedents) 

    On Error GoTo XIT 

End With 

If Not Rng3 Is Nothing Or Not Rng4 Is Nothing Then 

    If Rng1.Value > Rng2.Value Then 

        Call MsgBox(Prompt:="Attenzione", \_ 

            Buttons:=vbInformation, \_ 

            Title:="REPORT") 

    End If 

End If 

XIT:

Me.Protect Password:=sPassword 

End Sub

'<<========

Ho aggiornato il mio file di prova Andrea20230427.xlsm

Nota che il foglio Foglio1 è protetto con la password Pippo e le celle B1:B2, che alimentano le formule in A1:A2, sono sbloccate.

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2023-04-27T19:11:36+00:00

Ciao Andrea,

volevo chiedere quanto segue:

in un foglio excel in A1 c'è il risultato di una formula e anche in A2 c'è il risultato di un'altra formula.... Qual' ora il valore in A1 risulti maggiore di quello in A2 vorrei che si aprisse un msgbox con una nota "attenzione"

é possibile?

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 Rng1 As Range, Rng2 As Range, Rng3 As Range, Rng4 As Range 

Const sCella As String = "A1" 

Const sCella2 As String = "A2" 

With Me 

    Set Rng1 = .Range(sCella) 

    Set Rng2 = .Range(sCella2) 

    On Error Resume Next 

    Set Rng3 = Intersect(Target, Rng1.Precedents) 

    Set Rng4 = Intersect(Target, Rng2.Precedents) 

    On Error GoTo 0 

End With 

If Not Rng3 Is Nothing Or Not Rng4 Is Nothing Then 

    If Rng1.Value &gt; Rng2.Value Then 

        Call MsgBox(Prompt:="Attenzione", \_ 

            Buttons:=vbInformation, \_ 

            Title:="REPORT") 

    End If 

End If 

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 Andrea20230427.xlsm

===

Regards,

Norman

Immagine

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

7 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2023-04-28T10:43:37+00:00

    ok adesso proverò ad aggiornare per vedere cosa cambia e poi ti faccio sapere

    grazie Norman

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2023-04-27T19:33:19+00:00

    Ciao Andra,

    ciao Norman

    grazie come sempre ,funzione bene

    buona serata

    Infatti il codice originale è incompleto!

    Sostituisci il codice esistente con la seguente versione:

    '========>>

    Option Explicit

    '-------->>

    Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Rng1 As Range, Rng2 As Range, Rng3 As Range, Rng4 As Range 
    
    Const sCella As String = "A1" 
    
    Const sCella2 As String = "A2" 
    
    With Me 
    
        Set Rng1 = .Range(sCella) 
    
        Set Rng2 = .Range(sCella2) 
    
        On Error Resume Next 
    
        Set Rng3 = Intersect(Target, Rng1.Precedents) 
    
        Set Rng4 = Intersect(Target, Rng2.Precedents) 
    
        On Error GoTo 0 
    
    End With 
    
    If Not Rng3 Is Nothing Or Not Rng4 Is Nothing Then 
    
        If Rng1.Value &gt; Rng2.Value Then 
    
            Call MsgBox(Prompt:="Attenzione", \_ 
    
                Buttons:=vbInformation, \_ 
    
                Title:="REPORT") 
    
        End If 
    
    End If 
    

    End Sub

    '<<========

    Ho modificato il mio codice originale e aggiornato il mio file di prova.

    ===

    Regards,

    Norman

    Immagine

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2023-04-27T19:26:22+00:00

    ciao Norman

    grazie come sempre ,funzione bene

    buona serata

    La risposta è stata utile?

    0 commenti Nessun commento