Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro che fa apparire un messaggio se cambia il contenuto

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

Macro che fa apparire un messaggio se cambia il contenuto

Postdi tempusfugit » 03/08/20 07:08

Buongiorno,

avrei bisogno di capire quale istruzione dare per far apparire un messaggio quando in una determinata colonna colonna con un range per esempio (h1:h5), compare una stringa, il messaggio mi deve apparire in tutte le celle contenenti un menu' a tendina, se tento di modificare l'elenco del menu e l'evento deve selezionare la riga successiva a quella dove è cambiata la stringa.

Grazie.
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Set Target = Sheets(“foglio1”) = Range("I5:I18")
If Target <> “” Then MsgBox "E' POSSIBILE INSERIRE UNA SOLA PRENOTAZIONE!"

End Sub
tempusfugit
Newbie
 
Post: 6
Iscritto il: 29/07/20 07:27

Sponsor
 

Re: Macro che fa apparire un messaggio se cambia il contenut

Postdi Anthony47 » 03/08/20 12:33

Non capisco la logica che c'e' dietro a quello che chiedi, per cui mi limito a proporre questa versione di Sub Worksheet_Change:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count = 1 Then
    On Error Resume Next
    dvt = Target.Validation.Type
    On Error GoTo 0
    If dvt = 3 Then
        Application.EnableEvents = False
        ncval = Target.Value
        Application.Undo
        If Target.Value <> "" Then
            MsgBox ("La cella contiene gia' una prenotazione")      '<<< Il msg che preferisci
            Target.Offset(1, 0).Select
        Else
            Target.Value = ncval
        End If
        Application.EnableEvents = True
    End If
End If
End Sub

Il codice va inserito nel "modulo vba" del foglio su cui lavori; per come fare, vedi viewtopic.php?f=26&t=103893&p=647675#p647675

La macro controlla che la cella modificata contenga una convalida e contenga gia' un valore; se ambedue le condizioni sono vere allora rifiuta la modifica della cella.

Se questo non coincide con quanto avevi in mente allora e' meglio che descrivi "che cosa" vuoi realizzare, non "come avevi pensato" di realizzarlo.

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

Re: Macro che fa apparire un messaggio se cambia il contenut

Postdi tempusfugit » 05/08/20 10:45

Ciao, ti ringrazio per la routine, ma forse mi sono spiegato male.
La macro deve partire quando all'interno di un determinato range di celle: (i6:i18), l'istruzione rivela una stringa e tramite la funzione call fa partire un'altra macro con un messaggio di allert!
tempusfugit
Newbie
 
Post: 6
Iscritto il: 29/07/20 07:27

Re: Macro che fa apparire un messaggio se cambia il contenut

Postdi Anthony47 » 06/08/20 11:06

Allora, supponiamo che la richiesta sia:
-in un'area definita, es I6:I18..
-..se una cella gia' compilata viene compilata con un nuovo valore...
-..allora il nuovo valore deve essere rifiutato e il rifiuto segnalato con un messaggio di errore.
In questo caso potrebbe funzionare la seguente macro:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ckArea As String, ncVal, ccAdr As String
'
ckArea = "I6:I13"               '<<< L'area in cui eseguire il controllo
If Target.Count = 1 And Not Application.Intersect(Target, Range(ckArea)) Is Nothing Then
    If Target.Value <> "" Then
        Application.EnableEvents = False
        ncVal = Target.Value
        ccAdr = ActiveCell.Address
        Application.Undo
        If Target.Value <> "" Then
            MsgBox ("La cella contiene gia' una prenotazione")      '<<< Il msg che preferisci
            'Call AltraMacro                                        '<<< Oppure "chiama altra macro"
            Target.Offset(1, 0).Select
        Else
            Target.Value = ncVal
            Range(ccAdr).Select
        End If
        Application.EnableEvents = True
    End If
End If
End Sub

Il codice va sempre inserito "modulo vba" del foglio su cui lavori, in sostituzione di quanto suggerito nel mio post precedente.

Se questo non coincide con quanto avevi in mente allora e' meglio che descrivi "che cosa" vuoi realizzare, non "come hai pensato" di realizzarlo.

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


Torna a Applicazioni Office Windows


Topic correlati a "Macro che fa apparire un messaggio se cambia il contenuto":


Chi c’è in linea

Visitano il forum: Nessuno e 29 ospiti