Condividi:        

Celle obbligatorie

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

Celle obbligatorie

Postdi mpontic » 16/12/10 15:53

Ciao a tutti

Utilizzo per lavoro un file condiviso che compiliamo con vari dati.
Volevo chiedere se e' possibile fare in modo che il foglio excel non venga salvato (msg box di errore ad esempio) se non sono compilate alcune celle. Ovviamente il controllo andrebbe fatto sull'ultima riga compilata.
grazie mille

marco
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Sponsor
 

Re: Celle obbligatorie

Postdi Flash30005 » 16/12/10 19:54

I metodi possono essere diversi inoltre dovresti specificare meglio quante e quali sono le celle da "controllare", comunque...

Se devi controllare una sola cella puoi utilizzare questo codice:

Codice: Seleziona tutto
Private Sub Workbook_Open()
If Worksheets("Foglio1").Range("A3").Text = "" Then
MsgBox "Compilare la cella A3"
Cancel = True
End If
End Sub

Che dovrai inserire in Thisworkbook e non nel modulo

Se invece hai una serie contigua di celle puoi determinare l'area con numero colonna e numero riga e risolvere con questa macro (da inserire sempre in Thisworkbook ):

Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
ColI = 1
ColF = 4
RigaI = 2
RigaF = 5

For CC = ColI To ColF
For RR = RigaI To RigaF
If Worksheets("Foglio1").Cells(RR, CC).Text = "" Then
Set mc = Worksheets("Foglio1").Cells(RR, CC)
Worksheets("Foglio1").Cells(RR, CC).Select
MsgBox "Compilare la cella " & mc.Address(RowAbsolute:=False, ColumnAbsolute:=False)
Cancel = True
End If
Next RR
Next CC

End Sub


In ambedue il messaggio avverte quale cella deve essere compilata e nel caso di area seleziona anche la cella

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Celle obbligatorie

Postdi Anthony47 » 16/12/10 22:53

Oltre a quanto scritto da Flash, guarda anche qui viewtopic.php?f=26&t=77282 dove era stata discussa una richiesta analoga alla tua.

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

Re: Celle obbligatorie

Postdi mpontic » 17/12/10 10:18

Grazie mille per l'ottima soluzione.
Nella vostra proposta viene impostato un controllo in range di colonne (e va benissimo) e in uno di righe. Si puo' fare in modo che il controllo venga fatto solo nell'ultima riga (quella che ipoteticamente l'utente sta compilando)?

Grazie mille
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: Celle obbligatorie

Postdi Anthony47 » 17/12/10 15:15

Humm...
Ok, si puo' fare in modo che sull' ultima riga tutte le celle (delle colonne che ti interessano) siano compilate; ma come si puo' capire se "l' ultima riga" e' stata compilata o se invece e' ancora tutta da compilare?

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

Re: Celle obbligatorie

Postdi mpontic » 17/12/10 15:50

Si puo' ritenere compilata una riga con la prima cella popolata ad esempio.
Da tener conto del fatto che la colonna H e' gia' precomplilata da me. Il controllo va fatto da A a G.
Grazie
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: Celle obbligatorie

Postdi Anthony47 » 17/12/10 22:29

Allora puo' essere giusta l' interpretazione che "ultima riga" si considera l' ultima che ha H compilata? E che bisogna controllare che nelle colonne A:G di quella riga siano tutte compilate?
Se SI, allora dovrebbe essere Ok questa macro
Codice: Seleziona tutto
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
LastRow = Cells(Rows.Count, 8).End(xlUp).Row
For Each Cella In Range("A1").Offset(LastRow - 1, 0).Range("A1:G1")
    If IsEmpty(Cella) Then Cancel = True
Next Cella
If Cancel Then
    MsgBox ("Le colonne A:G della riga " & LastRow & " non sono state ancora compilate " _
      & vbCrLf & "Il File NON E' STATO salvato")
End If
End Sub
Da mettere nel modulo ThisWorkbook in sostituzione di quanto hai gia' inserito.

Ciao, fai sapere.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Celle obbligatorie

Postdi Flash30005 » 18/12/10 02:06

Alla luce di queste ultime informazioni
puoi dare il valore effettivo alle variabili colF e rigaF

Codice: Seleziona tutto
ColI = 1
ColF = 7
RigaI = 2
RigaF = Range("H" & Rows.Count).End(xlUp).Row

'... il resto della macro rimane invariato
'...


Leggi il post di Anthony delle 22:29

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Celle obbligatorie

Postdi mpontic » 18/12/10 09:04

Ottimo
siete dei maghi

grazie mille
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: Celle obbligatorie

Postdi mpontic » 21/12/10 11:56

Ciao ragazzi,

torno a chiedervi aiuto.
Sempre in relazione alle celle obbligatorie, e' possibile rendere obbligatoria la compilazione di determinate celle in base al valore che compare in una colonna?
Esempio
Range di colonne M...Z
se M non e' vuoto allora rendi obbligatorie le colonne da N...U
se Q e' uguale al valore "FT" allora rendi obbligatoria la colonna X
se Q e' uguale al valore "FP" allora rendi obbligatoria la colonna Z
se Q e' diverso da "FT" allora rendi obbigatorie le colonne da AE...AI

Grazie sempre
mpontic
Utente Junior
 
Post: 25
Iscritto il: 07/09/10 09:24

Re: Celle obbligatorie

Postdi Anthony47 » 23/12/10 00:09

Da programma si puo' fare quasi tutto, pero' mi pare che la domanda sia se lo possiamo fare noi, e alla lunga la risposta sara' "No, grazie".
Il mio suggerimento pertanto e' che ti fai nella cartella di lavoro, magari un foglio a se stante e protetto, uno specchietto riassuntivo di situazioni di errori, che normalmente descrive solo i vincoli, con un messaggio rosso in caso di errore; esempio, su due celle adiacenti in orizzontale:
1-Se presente [il significato di col M] compilare le colonne N-O-P-Q.....
2-Compilazione incompleta (in rosso) OPPURE VUOTO

Seguono i messaggi delle altre regole

In caso di uno o piu' errori, visualizzare un messaggio grande in rosso del tipo "COMPILAZIONE INCOMPLETA DEL MODULO"

A questo punto la tua Private Sub Workbook_BeforeSave puo' includere solo la riga
Sheets("Messaggi").Select

Il risultato sara' che il file viene salvato regolarmente ma l' utente dovrebbe avere chiaro il messaggio di quale regola non e' soddisfatta e che il lavoro e' incompleto.

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


Torna a Applicazioni Office Windows


Topic correlati a "Celle obbligatorie":


Chi c’è in linea

Visitano il forum: Nessuno e 61 ospiti