Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

elimina cella con macro

Ultimo Aggiornamento: 25/11/2015 23:22
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. [SM=g27813]
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. [SM=g27813]
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.... [SM=x423023]


"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

Re:
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 [SM=g27833]


"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

Re:
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 [SM=x423037]


[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 [SM=g27828] [SM=x423021]
[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)
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:00. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com