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

RE: Obbligo di inserire dati in una cella

583 views
Skip to first unread message

mykeike

unread,
Mar 16, 2006, 11:31:24 AM3/16/06
to
Grazie per la rapidità.
Credo di essermi spiegato male. Il fatto che ho inserito il cognome non
significa che ha anche versato la quota (c'è tempo per farlo). In sostanza,
se ho inserito il cognome, ho bisogno che venga anche inserito si oppure no.
Può capitare per varie ragioni che il valore non viene inserito o viene
cancellato etc. Prima di chiudere il foglio bisognerebbe che Excel
verificasse che tale cella sia avvalorata e, in caso negativo, avvisi con un
messaggio.
Grazie ancora!

"Tiziano Marmiroli" ha scritto:

> "mykeike" ha scritto:
>
> > Salve, ho bisogno di un aiuto. Sto impostando una tabella per inserimento di
> > nominativi e ho necessità, al verificarsi di una condizione, che una
> > specifica cella venga obbligatoriamente avvalorata. Passo all'es.: devo
> > inserire dei nominativi e, fra le altre informazioni, se questi hanno versato
> > la quota. Siccome saremo in 3-4 a inserire i dati, ho bisogno che Excel
> > obblighi a compilare la cella "pagato" se la cella "cognome" è avvalorata.
> > Pensavo a una macro lanciata da un pulsante: cliccando sul pulsante, parte la
> > macro che verifica se la cella pagato è compilata nel caso in cui la cella
> > cognome sia avvalorata. Nel caso in cui ci sia un cognome ma la cella pagato
> > non è compilata, la macro dovrebbe fermarsi e far compilare la cella. Fatto
> > questo si rilancia la macro e così via. Potete suggerirmi il codice della
> > macro? Sapete un metodo alternativo, più immediato?
>
> Se è solo questo avrebbe più senso usare una formula tipo
>
> C1: =SE(VAL.VUOTO(A1);"";"Pagato")
>
> --
> Tiziano Marmiroli
> Microsoft MVP - Office System
>

Thunder

unread,
Mar 17, 2006, 4:12:06 AM3/17/06
to

"mykeike" <myk...@discussions.microsoft.com> ha scritto nel messaggio
news:D6D6BDEF-8D12-43B4...@microsoft.com...
> Grazie per la rapiditŕ.

> Credo di essermi spiegato male. Il fatto che ho inserito il cognome non
> significa che ha anche versato la quota (c'č tempo per farlo). In
> sostanza,
> se ho inserito il cognome, ho bisogno che venga anche inserito si oppure
> no.
> Puň capitare per varie ragioni che il valore non viene inserito o viene

> cancellato etc. Prima di chiudere il foglio bisognerebbe che Excel
> verificasse che tale cella sia avvalorata e, in caso negativo, avvisi con
> un
> messaggio.
> Grazie ancora!
>
Ciao Mykeike,

per poterti aiutare, dovresti almeno spiegare com'č strutturato il tuo file.
Per esempio:
i nominativi sono inseriti in una tabella uno dopo l'altro? Se si, dunque i
cognomi sono sempre sulla stessa colonna e inseriti senza spazi tra una riga
e l'altra?

Poi dici:

> > Pensavo a una macro lanciata da un pulsante: cliccando sul pulsante,
> > parte la

> > macro che verifica se la cella pagato č compilata nel caso in cui la

> > cella
> > cognome sia avvalorata. Nel caso in cui ci sia un cognome ma la cella
> > pagato

> > non č compilata, la macro dovrebbe fermarsi e far compilare la cella.
> > Fatto
> > questo si rilancia la macro e cosě via.

Ma la tua macro cosa dovrebbe fare oltre che controllare che il se il
cognome č stato inserito vi sia anche un corrispettivo valore sul pagato
(Si/No)?

Restiamo in attesa di delucidazioni.

Ciao
Thunder


mykeike

unread,
Mar 17, 2006, 5:29:30 PM3/17/06
to

> per poterti aiutare, dovresti almeno spiegare com'è strutturato il tuo file.

> Per esempio:
> i nominativi sono inseriti in una tabella uno dopo l'altro? Se si, dunque i
> cognomi sono sempre sulla stessa colonna e inseriti senza spazi tra una riga
> e l'altra?

Nominativi una riga dopo l'altro, cognomi colonna A, nomi colonna B



> Poi dici:
>
> > > Pensavo a una macro lanciata da un pulsante: cliccando sul pulsante,
> > > parte la

> > > macro che verifica se la cella pagato è compilata nel caso in cui la

> > > cella
> > > cognome sia avvalorata. Nel caso in cui ci sia un cognome ma la cella
> > > pagato

> > > non è compilata, la macro dovrebbe fermarsi e far compilare la cella.
> > > Fatto
> > > questo si rilancia la macro e così via.


>
> Ma la tua macro cosa dovrebbe fare oltre che controllare che il se il

> cognome è stato inserito vi sia anche un corrispettivo valore sul pagato
> (Si/No)?
>
Esatto. La macro deve controllare che la cella C1, per esempio, contenga un
valore nel caso che la A1 contenga il cognome. E' sufficiente che la macro
riveli che la cella contenga SI o NO (ho già fissato un convalida nella
cella) e avvisi con un messaggio nel caso non lo fosse. Inserito il valore,
rilancio la macro e così via. Essa deve fermarsi alla prima cella della
colonna A vuota.

Grazie e scusate il ritardo, spero possiate aiutarmi.

Norman Jones

unread,
Mar 18, 2006, 6:30:49 AM3/18/06
to
Ciao Mykeike,

> Esatto. La macro deve controllare che la cella C1, per esempio, contenga
> un
> valore nel caso che la A1 contenga il cognome. E' sufficiente che la macro
> riveli che la cella contenga SI o NO (ho già fissato un convalida nella
> cella) e avvisi con un messaggio nel caso non lo fosse. Inserito il
> valore,
> rilancio la macro e così via. Essa deve fermarsi alla prima cella della
> colonna A vuota.

Nel modulo ThisWorkbook, incollarci il seguente codice:

'=============>>
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim SH As Worksheet
Dim rng As Range
Dim LRow As Long
Set SH = Me.Worksheets("Foglio1") '<<==== da CAMBIARE

LRow = SH.Cells(Rows.Count, "A").End(xlUp).Row

On Error Resume Next
Set rng = SH.Range("C1:C" & LRow).SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If Not rng Is Nothing Then
Cancel = True
With rng.FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=LEN($C1)=0"
.Item(1).Interior.ColorIndex = 6
End With
Application.Goto rng
MsgBox Prompt:="Le celle evidenziate sono vuote! ", _
Buttons:=vbCritical, _
Title:="Avvertimento!"
End If

End Sub
'<<=============


---
Regards,
Norman


mykeike

unread,
Mar 18, 2006, 8:29:27 AM3/18/06
to
Grazie!
Questa macro fa il controllo quando chiudo il file: mi va benissimo!

Grazie ancora!

"Norman Jones" ha scritto:

mykeike

unread,
Mar 18, 2006, 8:47:02 AM3/18/06
to
Scusami, ma ho un piccolo problema. Ho verificato la tua macro e funziona.
Purtroppo dovevo precisare che nella colonna A (che in realtà nella mia
tabella è la colonna B, mentre quella del si/no è la colonna R..) c'è dentro
una formula: infatti se quel nome c'era anche nell'edizione precedente
inserisco semplicemente il suo codice e Excel mi va a pescare i suoi dati
dall'elenco generale in un altro foglio. Se è nuovo, sovrascrivo la formula.
La macro mi evidenzia tutta la colonna C (cioè R) fin dove nella colonna A
(cioè B) c'è la formula, pur se non avvalorata. Avrei già pensato a una
scorciatoia, ma se fosse possibile modificare la macro in modo che controlli
se la colonna A (cioè B) ha effettivamente un valore sarebbe un piacere.....
Grazie!

"Norman Jones" ha scritto:

Norman Jones

unread,
Mar 19, 2006, 1:09:36 AM3/19/06
to
Mykeike ha scritto:

> Scusami, ma ho un piccolo problema. Ho verificato la tua macro e funziona.
> Purtroppo dovevo precisare che nella colonna A (che in realtà nella mia
> tabella è la colonna B, mentre quella del si/no è la colonna R..) c'è
> dentro
> una formula: infatti se quel nome c'era anche nell'edizione precedente
> inserisco semplicemente il suo codice e Excel mi va a pescare i suoi dati
> dall'elenco generale in un altro foglio. Se è nuovo, sovrascrivo la
> formula.
> La macro mi evidenzia tutta la colonna C (cioè R) fin dove nella colonna A
> (cioè B) c'è la formula, pur se non avvalorata. Avrei già pensato a una
> scorciatoia, ma se fosse possibile modificare la macro in modo che
> controlli
> se la colonna A (cioè B) ha effettivamente un valore sarebbe un
> piacere.....
> Grazie!

'-------------------------------------------

Ciao Mykeike,

Prova la seguente versione:

'=============>>
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim SH As Worksheet

Dim rng As Range, rng2 As Range, rng3 As Range
Dim LRow As Long, LRow2 As Long
Dim arr As Variant
Const Colonna1 As String = "B" '<<=== da CAMBIARE
Const Colonna2 As String = "R" '<<=== da CAMBIARE

Set SH = Me.Worksheets("Foglio1") '<<=== da CAMBIARE

LRow = SH.Cells(Rows.Count, Colonna1).End(xlUp).Row

Set rng = SH.Range(Colonna1 & "1:" & Colonna1 & LRow)

With rng
arr = .Formula
.Value = .Value
On Error Resume Next
.SpecialCells(xlCellTypeConstants, xlErrors).ClearContents
On Error GoTo 0
End With

LRow2 = Cells(Rows.Count, Colonna1).End(xlUp).Row

SH.Range("B1").Resize(LRow) = arr

Set rng2 = SH.Range(Colonna2 & "1:" & Colonna2 & LRow2)

On Error Resume Next
Set rng3 = rng2.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If Not rng3 Is Nothing Then
Cancel = True
rng2.Select

With rng2.FormatConditions
.Delete
.Add Type:=xlExpression, Formula1:="=LEN($R1)=0"


.Item(1).Interior.ColorIndex = 6
End With

Application.Goto rng3

mykeike

unread,
Mar 19, 2006, 3:48:27 AM3/19/06
to
Perfetto!
Ancora Grazie!
Ciao

"Norman Jones" ha scritto:

0 new messages