Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Convalida dati e ignora celle vuote

1,069 views
Skip to first unread message

Solari

unread,
Oct 13, 2006, 5:26:01 PM10/13/06
to
Ciao a tutti.Ho inserito tramite il comando convalida dati un elenco tra cui
scegliere ed ho anche messo la spunta su ignora celle vuote.Nel mio elenco ci
sono anche celle vuote cioè senza nessuna formula e nient'altro.Però il
comando convalida dati->elenco mi prende anche le celle vuote

fernando cinquegrani

unread,
Oct 14, 2006, 7:41:57 AM10/14/06
to
[Solari] scrive in
http://www.google.it/groups?threadm=944481EF-13C8-4131...@microsoft.com

forse 'ignora celle vuote' ha un significato diverso da quello
che tu immagini.
una cella di convalida è impostata di default a
'mostra messaggio di errore quando i dati immessi non sono validi'
(nel caso di un elenco, ad esempio, in presenza di un input
non presente nell'elenco).
con 'ignora celle vuote' dico semplicemente di non mostrare
il messaggio di errore per le celle vuote anche se queste
violano leregole di convalida.
puoi osservare la differenza,
inserendo un voce corretta e poi cancellandola.
in presenza di 'ignora celle vuote' la cancellazione sarà ok.
in assenza di 'ignora celle vuote' la cancellazione sarà
considerata errore.
.f
fernando cinquegrani
http://www.prodomosua.eu


Barbara

unread,
Oct 16, 2006, 7:02:43 AM10/16/06
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:uh7T3Z47...@TK2MSFTNGP04.phx.gbl...

> puoi osservare la differenza,


> inserendo un voce corretta e poi cancellandola.
> in presenza di 'ignora celle vuote' la cancellazione sarà ok.
> in assenza di 'ignora celle vuote' la cancellazione sarà
> considerata errore.
> .f
> fernando cinquegrani
> http://www.prodomosua.eu

Togliendo la spunta da 'ignora celle vuote', in effetti, la cella vuota
viene considerata un errore (come si può verificare usando gli strumenti
'verifica formule', o tentando di lasciare la cella vuota dopo aver premuto
F2), ma la cancellazione (purtroppo) viene comunque consentita.
Anche perché la convalida 'controlla' l'immissione diretta di un valore in
una cella: la cancellazione non è un'immissione.

Togliere la spunta da 'ignora celle vuote', può essere invece utile in un
caso di convalida personalizzata, per esempio:
=$B$1<>"" (che dovrebbe impedire l'inserimento di dati nell'intervallo in
cui metti la convalida, nel caso in cui B1 sia vuota)
La convalida in questo caso è efficace *solo* togliendo la spunta.

Ciao
Barbara


fernando cinquegrani

unread,
Oct 16, 2006, 2:32:29 PM10/16/06
to
[Barbara] scrive in
http://www.google.it/groups?threadm=uKredKR8...@TK2MSFTNGP05.phx.gbl

> Togliendo la spunta da 'ignora celle vuote', in effetti, la cella
> vuota viene considerata un errore (come si può verificare usando gli
> strumenti 'verifica formule', o tentando di lasciare la cella vuota
> dopo aver premuto F2), ma la cancellazione (purtroppo) viene comunque
> consentita. Anche perché la convalida 'controlla' l'immissione diretta
> di un
> valore in una cella: la cancellazione non è un'immissione.

hai ragione, bisognerebbe sempre controllare ciò
che si dice. però:
in A1: A3 a b c
in B1 dati :: convalida :: elenco...A1:A3
[ ] ignora celle vuote
in B1 seleziona b
quindi F2 e cancella b (backspace) invio
risultato: errore
certo è un modo un po' strano di cancellare :-)
.f

Maurizio Borrelli

unread,
Oct 16, 2006, 3:05:04 PM10/16/06
to
"fernando cinquegrani" wrote in message
news:#VtVAGV8...@TK2MSFTNGP03.phx.gbl:

Gia'... Infatti non e' una cancellazione ma e' una immissione di una
stringa nulla. Poco importano i giochini che si fanno durante
l'immissione; conta solo cio' che si immette.

La cancellazione ("Canc" del valore di una cella) e' un'altra cosa.

--
Ciao :o)
Maurizio Borrelli, Microsoft Office Access MVP
-------- http://mvp.support.microsoft.com/
?SPQR(C)
X RIO - Risorse in italiano per gli utenti di office
-------- http://www.riolab.org/

fernando cinquegrani

unread,
Oct 16, 2006, 11:30:34 PM10/16/06
to
[Maurizio Borrelli] scrive in

> Gia'... Infatti non e' una cancellazione ma e' una immissione di una
> stringa nulla. Poco importano i giochini che si fanno durante
> l'immissione; conta solo cio' che si immette.
>
> La cancellazione ("Canc" del valore di una cella) e' un'altra cosa.

mi piacerebbe sapere quale altra cosa č. :-)
se volessi simulare il funzionamento della convalida con
il codice, dovrei tener presente che 'immissione
e cancellazione generano entrambe l'evento
change. diventano diverse, immissione e cancellazione,
se io riesco ad intercettare il tasto, invio o canc, che
ha generato l'evento. (idem in una casella a discesa).
mi sembra cioč che sia 'strano' (non conforme alla
logica di funzionamento di excel) il funzionamento attuale
e, probabilmente [avevo scritto senza far prove, ma ero
certo che fosse cosě], sarebbe stato piů utile considerarli
alla stessa stregua.
.f

Maurizio Borrelli

unread,
Oct 17, 2006, 4:19:48 AM10/17/06
to
"fernando cinquegrani" wrote in message
news:OeXO#yZ8GH...@TK2MSFTNGP02.phx.gbl:

Ciao Fernando.

Gli e' che d'un prodotto software va analizzata la psiche al pari di un
essere umano, e conviene indagarne i traumi infantili per tentar di
comprender l'azioni de l'omo fatto. E questo assunto pare piu' vero
quanto piu' l'organismo, seppur soffice, e' complesso, e adulto, e da
fil d'erba diventato tronco fronzuto la' dove priamente fue messo a
dimora.

Sparata questa posa... veniamo ai fatti.

Operero' con le opzioni seguenti, che sono se non erro quelle "di
fabbrica". Vedremo poi se mutandole muta del pari il comportamento del
soggetto in esame:

Strumenti > Modifica
[v] Modifica direttamente nella cella
[v] Sposta la selezione dopo Invio
Direzione: Giu'

Questi i dati e le impostazioni del foglio di lavoro (unico presente
nella cartella di lavoro, salvata come "Cartel1.xls"):

| A | B | C |
--+---------+---+---+-+
1|Pippo | | |v|
2|Pluto | | |-+
3|Paperino | | |
__| _|___|___|
\Foglio1/

C1:
Dati > Convalida...
Impostazioni
Consenti: Elenco
Origine: =$A$1:$A$9
[_] Ignora celle vuote
[v] Elenco nella cella
Messaggio di errore
[v] Mostra messaggio di errore quando i dati immessi non sono validi

' Foglio1 Worksheet
'
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Const cIndent = 3
Debug.Print "Worksheet_Change::"; Target.Address
If (Target.Cells.Count <> 1) Then
Debug.Print Spc(cIndent) _
; "Gli intervalli di piu' di una cella" _
; " non sono considerati."
Exit Sub
End If
With Target
Debug.Print Spc(cIndent) _
; "TEXT", "'"; .Text; "'"
Debug.Print Spc(cIndent) _
; "VALUE", IIf(IsEmpty(.Cells), "#EMPTY", .Value)
If (.HasFormula) Then
Debug.Print Spc(cIndent) _
; "FORMULA", .Formula
End If
End With
End Sub

Primo comportamento schizoide:

L'immissione in C1 del valore "Pippo" sia per mezzo della selezione
della voce dell'elenco che con la digitazione conclusa dal tasto Invio
produce, come ci si aspetterebbe, lo stesso output:

Worksheet_Change::$C$1
TEXT 'Pippo'
VALUE Pippo
Worksheet_Change::$C$1
TEXT 'Pippo'
VALUE Pippo

mentre le registrazioni delle relative macro sono differenti:

Sub Macro1()
End Sub

Sub Macro2()
ActiveCell.FormulaR1C1 = "Pippo"
Range("C2").Select
End Sub

Ovvero la selezione della voce dell'elenco non produce la registrazione
di codice. Come non fosse avvenuta. E si' che l'evento Change, come
visto, si scatena in entrambi i casi con lo stesso effetto.

Vediamo la cancellazione "sommaria". Quella per intenderci che si
ottiene col tasto Canc.

Worksheet_Change::$C$1
TEXT ''
VALUE #EMPTY

Sub Macro3()
Selection.ClearContents
End Sub

In conclusione, ma l'argomento non pare essere esaurito ma lo sono io e
probabilmente voi, vediamo immissione e cancellazione da codice, per
mezzo della finestra Immediata:

range("C1").Value="Pippo"
Worksheet_Change::$C$1
TEXT 'Pippo'
VALUE Pippo

range("C1").ClearContents
Worksheet_Change::$C$1
TEXT ''
VALUE #EMPTY

range("C1").Value=""
Worksheet_Change::$C$1
TEXT ''
VALUE #EMPTY

range("C1").Value="'"
Worksheet_Change::$C$1
TEXT ''
VALUE

range("C1").Formula="="""""
Worksheet_Change::$C$1
TEXT ''
VALUE
FORMULA =""

range("C1").Value="Topolino"
Worksheet_Change::$C$1
TEXT 'Topolino'
VALUE Topolino

Tutto questo senza che la convalida produca messaggi di errore.

0 new messages