Condividi:        

Bloccare automaticamente il valore scritto in una cella

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

Re: Bloccare automaticamente il valore scritto in una cella

Postdi Anthony47 » 22/04/11 23:38

Te l' avevo detto che era la penultima versione della macro; prova a modificare la terza riga nella Worksheet_SelectionChange in
If ActiveCell.Address = ACelAd Then ACelAd = "": Exit Sub

Sara' l' ultima?

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

Sponsor
 

Re: Bloccare automaticamente il valore scritto in una cella

Postdi marcoraiu » 23/04/11 16:40

Perdonami con il tasto "canc" clicco 2 volte e si cancella il valore
marcoraiu
Utente Junior
 
Post: 73
Iscritto il: 30/03/09 16:17

Re: Bloccare automaticamente il valore scritto in una cella

Postdi Anthony47 » 25/04/11 02:02

Nei miei test questo comportamento non si manifesta: Canc viene vietato sia la prima che le ulteriori volte; testato su 2002-2003-2010.
A scanso di equivoci questo e' il codice dopo l' ultima (la penultima??) modifica:
Codice: Seleziona tutto
Public Preced As Boolean, ACelAd As String
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "D1:D40"    '<< L' area da bloccare
If Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
If Preced Then
Application.EnableEvents = False
    Application.Undo:    ACelAd = ActiveCell.Range("A1").Address
    MsgBox ("Vietato modificare la cella " & Target.Address)
    Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If ActiveCell.Address = ACelAd Then ACelAd = "": Exit Sub
On Error Resume Next
ACelAd = ""
If IsError(Target.Value) Then
    Preced = False
    Else
    If Target.Value <> 0 Then Preced = True Else Preced = False
End If
End Sub

Puoi descrivere il tuo ambiente e la sequenza di prova?
Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19220
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Bloccare automaticamente il valore scritto in una cella

Postdi marcoraiu » 26/04/11 17:39

Ciao Anthony io ho cambiato D1:D40 in A1:S37
non ho scritto nientaltro.Se scrivo un dato non si cancella ,provo ad evidenziarli dal basso verso l'altro(es. da C11 a C1),premo il tasto "canc" e mi permette la cancellazione.Questo accade anche in origine(non cambiando l'area di lavoro)
Grazie
Marco
marcoraiu
Utente Junior
 
Post: 73
Iscritto il: 30/03/09 16:17

Re: Bloccare automaticamente il valore scritto in una cella

Postdi Anthony47 » 26/04/11 23:14

Mi ero accorto del problema creato alla selezione di piu' celle, e l' avrei risolto modificando la seconda riga della in Worksheet_SelectionChange
Codice: Seleziona tutto
If Target.Count > 1 Then Preced = True: Exit Sub
In questo modo non e' possibile lavorare con selezione multipla all' interno dell' area controllata.

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

Re: Bloccare automaticamente il valore scritto in una cella

Postdi marcoraiu » 27/04/11 19:29

Ho fatto la modifica ,però ho trovato che ,trascinando una cella posso sostituirne un altra già bloccata,anche con "taglia e Incolla".
Sai cosa faccio Antohny;il file lo uso così ,alla Fine del lavoro faccio bloccare con password il foglio della giornata,cosi non possono alterarlo, che dici?
Ciao Marco
marcoraiu
Utente Junior
 
Post: 73
Iscritto il: 30/03/09 16:17

Re: Bloccare automaticamente il valore scritto in una cella

Postdi Anthony47 » 27/04/11 23:52

Mah, dipende dall' obiettivo che devi raggiungere e se vuoi contrastare la possibilita' di errori o anche la malafede.
Forse un livello di sicurezza ulteriore potresti averlo creando una "copia ombra" del foglio, magari nascosta; poi su ogni evento Worksheet_Change controlli che ogni cella del foglio visibile corrisponda alla stessa cella del foglio ombra; se sul visibile c' e' un nuovo valore in corrispondenza di un vuoto riempi il vuoto; ma se una cella risulta diversa dall' equivalente sul foglio ombra allora la ripristini e segnali il divieto.
Potrebbe corrispondere a una macro di questo tipo:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
CheckArea = "D1:D40"    '<< L' area da bloccare
ombra = "Foglio3"    '<<< Il foglio usato come "Ombra"
Sheets(ombra).Visible = False
If Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
TargAd = Target.Address
For Each Cella In Range(CheckArea)
    If Cella <> ThisWorkbook.Sheets(ombra).Range(Cella.Address) Then
        If ThisWorkbook.Sheets(ombra).Range(Cella.Address).Value = "" Then
            ThisWorkbook.Sheets(ombra).Range(Cella.Address).Value = Cella.Value
        Else
            Cella.Value = ThisWorkbook.Sheets(ombra).Range(Cella.Address).Value
            Cella.Select
            MsgBox ("Proibito modificare la cella " & Cella.Address)
        End If
    End If
Next Cella
End Sub

Da aggiustare le istruzioni marcate <<

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

Re: Bloccare automaticamente il valore scritto in una cella

Postdi marcoraiu » 28/04/11 11:32

Ok farò così.
Grazie per il tempo che mi hai dedicato Anthony
un saluto a tutto il forum(il miglior forum in circolazione).
Ciao Marco
marcoraiu
Utente Junior
 
Post: 73
Iscritto il: 30/03/09 16:17

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Bloccare automaticamente il valore scritto in una cella":

BTp Valore
Autore: MarioLombardi
Forum: Forum off-topic
Risposte: 2

Chi c’è in linea

Visitano il forum: Nessuno e 22 ospiti