Condividi tramite

convalida dati e rifiuta immissione

Anonimo
2019-02-06T12:25:11+00:00

Se condivido il file Excel con altri utenti, tipicamente uso "convalida dati" con "rifiuta immissione" nel caso che venisse digitato, nella cella, del testo non congruente con le opzioni presenti nell'elenco a discesa che ho appositamente creato.

Funziona correttamente.

Fino a quando un utente non prende un'altra cella, la copia interamente (non solo il testo ma proprio tutta la cella), e la incolla sopra la cella con convalida dati.

Da lì si annulla il vincolo che avevo impostato.

Come posso ovviare e bloccare anche il paste di altre celle?

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

1 risposta

Ordina per: Più utili
  1. Anonimo
    2019-02-06T13:43:42+00:00

    Ciao Martina,

    Se condivido il file Excel con altri utenti, tipicamente uso "convalida dati" con "rifiuta immissione" nel caso che venisse digitato, nella cella, del testo non congruente con le opzioni presenti nell'elenco a discesa che ho appositamente creato.

    Funziona correttamente.

    Fino a quando un utente non prende un'altra cella, la copia interamente (non solo il testo ma proprio tutta la cella), e la incolla sopra la cella con convalida dati.

    Da lì si annulla il vincolo che avevo impostato.

    Come posso ovviare e bloccare anche il paste di altre celle?

    Per impedire la rimozione della convalida dei dati, crea il nome definito Intervallo per l'intervallo di interesse e prova il seguente approccio VBA ,il quale è basato sui suggerimenti di John Walkenbach:

    • 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)

        Const sIntervallo_Convalida_Dati = "Intervallo"                      '<<=== Modifica

        If HasValidation(Range(sIntervallo_Convalida_Dati)) Then

            Exit Sub

        Else

            On Error GoTo XIT

            With Application

                .EnableEvents = False

                .Undo

                Call MsgBox( _

                     Prompt:="La tua ultima operazione è stata annullata." _

                             & vbNewLine & " perchè avrebbe cancellato" _

                             & " le regole di convalida dei dati.", _

                     Buttons:=vbCritical, _

                     Title:="COPIA CANCELLATA!")

            End With

        End If

    XIT:

        Application.EnableEvents = True

    End Sub

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

    Private Function HasValidation(r) As Boolean

        Dim X As Variant

        On Error Resume Next

        X = r.Validation.Type

        If Err.Number = 0 Then

            HasValidation = True

        Else

            HasValidation = False

        End If

    End Function

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

    • 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 Martina20190206.xlsm

    ===

    Regards,

    Norman

    La risposta è stata utile?

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