| | Post: 277 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
21/11/2015 15:12 | |
Ciao,
nell'esempio allegato ho un range colorato E5:AI46 non bloccato.
Chiedo un aiuto per creare una macro collegata ad un pulsante che cancelli solo le celle del range giallo.
Se si tenta di calncellare al di fuori di questo range un avviso deve dire "non puoi eliminare questa cella/le".
Spero di essere stato comprensibile.
john ---------------
excel 2007 |
|
| | Post: 60 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
21/11/2015 18:46 | |
Ma le celle non bloccate contengono solo dati o anche formule ?
Nel primo caso ti basta inserire nel modulo del foglio il seguente codice ed associare la macro al pulsante che hai messo.
Per il messaggio di avviso basta quello standard di Excel visto che hai protetto il foglio e che le altre celle sono bloccate. Option Explicit
Sub EliminaCelle()
ActiveSheet.Unprotect Password:="123456"
Range("E5:AH46").ClearContents
ActiveSheet.Protect Password:="123456"
End Sub Oppss, ora vedo, l'area interessata è E5:AI46 mentre l'area evidenziata è E5:AH46 pertanto le celle da non eliminare con avviso sono quelle della colonna AI.
Ovvero ? cosa c'è in queste celle AI5:AI46 ? possono venire compilate/modificate ma non cancellate ???!!! [Modificato da rollis13 21/11/2015 19:09]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 277 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
21/11/2015 19:38 | |
Ciao rollis13,
scusa mi sono espresso male.
Intendevo cancellare "solo 1 o più di una cella" del range in giallo e non "tutto" il range in un colpo.
Nel range intesessato non ci sono formule.
Grazie dell'aiuto.
john [Modificato da john_cash 21/11/2015 19:39] ---------------
excel 2007 |
| | Post: 215 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
21/11/2015 21:10 | |
john_cash, 21/11/2015 19:38:
Ciao rollis13,
scusa mi sono espresso male.
Intendevo cancellare "solo 1 o più di una cella" del range in giallo e non "tutto" il range in un colpo.
Nel range intesessato non ci sono formule.
Grazie dell'aiuto.
john
Ciao a tutti,
@john_cash
anche adesso non è che si capisca meglio...
In che senso vuoi cancellare "1 o più di una cella", come glie lo dici che celle cancellare? Attraverso una Inputbox ? [Modificato da cromagno 21/11/2015 21:10]
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 62 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
21/11/2015 21:51 | |
Ipotizzando che si sappia già quali celle cancellare basterebbe cambiare la riga del codice in (con l'esempio di alcuni range): Range("E7:G8,E10:H30,P10:AA30,AH7:AH44").ClearContents
Ora il problema diventa: come evitare la cancellazione di alcune specifiche caselle (tutte le altre nel range E5:AI46 escluse quelle nella macro) senza averle protette ? e permettere comunque la loro compilazione/modifica. [Modificato da rollis13 21/11/2015 21:53]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 217 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
21/11/2015 21:56 | |
Ciao rollis13,
credo che basterebbe effettuare un controllo su prima e ultima colonna, e prima e ultima riga del range che si sta cancellando.... se esce dal range "giallo", blocca la cancellazione (o esce dalla sub).
Almeno credo....
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 63 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
21/11/2015 22:44 | |
Ciao cromagno,
Fuori del range non ci sono problemi, l'utente ha detto nel post #1 che solo le celle del range E5:AI46 sono "libere" e pertanto già provvede la protezione attiva a bloccare la gestione delle celle fuori del range. [Modificato da rollis13 21/11/2015 22:45]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 278 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
23/11/2015 20:16 | |
Ciao,
con l'aiuto di un amico mi ha creato questo:
Option Explicit
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("B4:H15")) Is Nothing Then
Target.Value = ""
Else
MsgBox "non puoi eliminare questa cella", vbOKOnly, "Errore"
End If
End Sub
funziona bene e ringrazio chi mi ha consigliato altre soluzioni in questo thread.
Precedentemente nel titolo e risposte mi ero espresso male.
Chiedo un aiuto per una modifica a questa macro.
Ora funziona con doppio click.
E' possibile fare questo:
seleziono una cella clicco canc e esce lo stesso avviso della macro postata.
Allego il file di esempio.
john [Modificato da john_cash 23/11/2015 20:30] ---------------
excel 2007 |
| | Post: 224 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
23/11/2015 21:03 | |
Ciao,
ma le altre celle non erano già bloccate?!?
Comunque puoi implementare questo codice all'evento "Worksheet_Change":
Private Sub Worksheet_Change(ByVal Target As Range)
Dim msg
msg = MsgBox("non puoi eliminare questa cella", vbOKOnly, "Errore")
If Not Intersect(Target, Range("B4:H15")) Is Nothing Then
Application.OnKey "{DEL}", msg
End If
End Sub
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 279 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
23/11/2015 22:32 | |
Ciao cromagno.
Non so se ho sbagliato ma non funziona, ogni volta esce l'avviso dell'immagine che allego.
Le celle al di fuori del range in giallo sono bloccate.
La macro con l'avviso deve funzionare nel resto del foglio.
Allego anche il file di esempio.
john ---------------
excel 2007 |
| | Post: 65 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
23/11/2015 22:50 | |
Buonasera a tutti. john_cash:
Le celle al di fuori del range in giallo sono bloccate.
La macro con l'avviso deve funzionare nel resto del foglio.
Sinceramente, anche se ho già provato a postare una soluzione, ancora ora non ho capito cosa si vuol fare.
1) se "le celle al di fuori del range sono bloccate" presumo che sia anche attiva la "Protezione del Foglio", o no ?
2) a questo punto a che serve l'avviso che "deve funzionare nel resto del foglio" ? qual'è il resto del foglio ?
[Modificato da rollis13 23/11/2015 23:07]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 280 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
23/11/2015 22:56 | |
Spero di spiegarmi.
Il range in giallo B4:H15 non è bloccato, il resto del foglio si.
La macro deve funzionare così:
se clicco < canc > FUORI dal range in giallo deve apparire l'avviso
john ---------------
excel 2007 |
| | Post: 225 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
23/11/2015 22:58 | |
Ciao a tutti,
in effetti, riprovando dà quell'errore anche a me (pur non essendo alcun richiamo a "macro 1").
Sò solamente che i metodi Onkey, Sendkey, etc... causano spesso problemi...
Mi sa che bisogna trovare qualcos'altro.
Comunque concordo con rollis13(un saluto)...
Anche io non capisco le stesse cose che ti ha appena chiesto
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 226 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
23/11/2015 23:02 | |
Appunto...
Se premi "CANC" o altro al di fuori del range giallo ti esce comunque un messaggio che non puoi modificare la cella.
E' proprio per questo che non capiamo l'utilità di questa cosa! [Modificato da cromagno 23/11/2015 23:03]
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 66 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
23/11/2015 23:06 | |
john_cash:
Il range in giallo B4:H15 non è bloccato, il resto del foglio si.
Ma a questo punto cosa intendi per bloccato ? Hai attivato la "Protezione del Foglio" ? perché in tal caso un messaggio ti viene fornito automaticamente da Excel nel momento che tenti un'operazione di qualsiasi tipo nelle celle bloccate.
PS. mi sono perso 4 minuti da qualche parte
[Modificato da rollis13 23/11/2015 23:09]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 227 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
23/11/2015 23:58 | |
Ho capito l'errore riguardante "macro 1"...
Rimane il fatto che questo metodo non va bene.
Rimane anche il fatto che non capisco il senso della tua richiesta [Modificato da cromagno 23/11/2015 23:59]
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 281 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
24/11/2015 18:07 | |
Ciao,
il range NON IN GIALLO è bloccato/protetto con password.
Se clicco CANC al di fuori del range in giallo (B4:H515) appare l'avviso che la cella è protetta e fin qui va bene.
Quello che chiedo e che appaia un msgbox come l'ultima macro che ho postato nella risposta #8.
Spero di essermi spiegato.
john ---------------
excel 2007 |
| | Post: 282 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
24/11/2015 21:04 | |
Ciao,
sto tentando a caso...
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4:H15")) Is Nothing Then
'Target.Value = ""
' Else
MsgBox "non puoi eliminare questa cella", vbOKOnly, "Errore"
End If
End Sub
ora l'avviso esce se clicco canc nel range B4:H15 e non nel resto del foglio. Deve essere il contrario: non uscire nel range B4:H15 ma nel resto del foglio si.
john
---------------
excel 2007 |
| | Post: 68 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
24/11/2015 23:25 | |
Ma hai proprio la necessità di posizionarti e tentare di cancellare le celle boccate ?
Altrimenti, quando imposti la Protezione ti basta togliere la spunta alla voce "Seleziona celle bloccate".
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
| | Post: 283 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
25/11/2015 19:34 | |
Io lo so quali sono bloccate, sono gli altri che non lo sanno e se tentano di elinare/cancellare al di fuori del range in giallo B4:H15 deve apparire il messaggio.
john ---------------
excel 2007 |
| | Post: 233 | Registrato il: 02/08/2015
| Utente Junior | Excel 2013 | | OFFLINE |
|
25/11/2015 19:37 | |
Ma cosa vuol dire "gli altri non lo sanno"????
Se sono bloccate, anche gli altri non possono cancellarle ed il messaggio di default di Excel appare proprio per far capire il perchè non si possono cancellare! [Modificato da cromagno 25/11/2015 19:41]
"Sono le persone che nessuno immagina che possano fare certe cose, quelle che fanno cose che nessuno può immaginare." |
| | Post: 284 | Registrato il: 28/05/2011
| Città: MILANO | Età: 43 | Utente Junior | excel 2000/2007 | | OFFLINE | |
|
25/11/2015 19:52 | |
In poche parole io chiedo (non so se è possibile) che in alternativa al messaggio di excel "la cella o il grafico che si tenta........"
appaia il messaggio che chiedo.
Sempre sia possibile.....
john ---------------
excel 2007 |
| | Post: 69 | Registrato il: 16/08/2015
| Città: CORDENONS | Età: 67 | Utente Junior | Excel 2016-32bit Win11 | | OFFLINE |
|
25/11/2015 23:22 | |
Ok, così si capisce cosa realmente serviva. Ti posso già dire che quei tipi di messaggi di Excel, che io sappia, difficilmente si possono gestire ... vanno evitati alla radice. In questo caso non bisogna proteggere le celle e/o il foglio.
Ora c'è un altro problema: nel post #20 hai scritto: "se tentano di eliminare/cancellare al di fuori del range in giallo B4:H15 deve apparire il messaggio", questo significa che fuori del range l'utente può inserire/modificare ma non eliminare/cancellare, giusto ? Se sì, prova questa prima bozza di macro che però ha una piccola "sbavatura", ovvero, se selezioni più celle contemporaneamente ed almeno una di queste è all'interno della zona gialla viene permesso cancellare anche quanto fuori della zona. Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B4:H15")) Is Nothing Then Exit Sub
If IsEmpty(Target) Or Target.Cells.Count > 1 Then
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
MsgBox "Non puoi eliminare questa cella.", vbOKOnly, "Errore"
End If
End Sub In pratica, fuori del range se la cella è vuota permette di scrivere, se è compilata ne permette la modifica ma non lo svuotamento, ovvero, viene eseguita una operazione "Application.Undo" per ripristinare la condizione a prima dell'uso del tasto Canc. [Modificato da rollis13 25/11/2015 23:26]
______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto) |
|
|