Condizioni su Workbook_BeforeClose

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
Lurik_f
00martedì 24 maggio 2016 16:40
Ciao a tutti
vorrei essere sicuro che alcune celle siano compilate/modificate prima della chiusura del file se almeno una delle celle A12:A37 è compilata.

Nell'esempio: avrei bisogno che se una delle celle A8:A37 è compilata A2 debba essere diverso da "Campo1" F2 non possa essere nullo e che j2 debba essere diverso da "Campo3". In caso contrario appaia un MSGBOX

Grazie a tutti in anticipo


Andrebbe anche benissimo anche impedire l'inserimento dei dati nelle celle A8:A37 ( con un msgBox) sempre se le 3 condizioni non sono soddisfatte.


Ciao Lurik
raffaele1953
00martedì 24 maggio 2016 19:20
Prova
'Sub Workbook_BeforeClose()
Sub prova()
Dim N, X
For X = 3 To 37
    If Cells(X, 1) <> "" Then
        N = N + 1
    End If
Next X
If N <> 0 And [A2] <> "Campo1" And [F2] <> "" And [J2] <> "Campo3" Then
    MsgBox "celle corrispondenti"
    'esegui codice
Else
    If N = 0 Then MsgBox "nessun dato in A8:A37"
    If [A2] = "Campo1" Then MsgBox "A2 = Campo1"
    If [F2] = "" Then MsgBox "F2 = vuoto"
    If [J2] = "Campo3" Then MsgBox "J2 = Campo3"
End If
End Sub
Lurik_f
00martedì 24 maggio 2016 20:54
Grazie Mille Raffaele
è perfetta, l'unica cosa è che ( non mi sono spiegato bene io ) vorrei che non fosse possibile chiudere il file senza quei campi compilati!

Grazie ancora
Lurik [SM=x423023]
rollis13
00martedì 24 maggio 2016 22:46
Per bloccare la chiusura devi iniziare lo script di raffaele1953 così:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
    
    Cancel = True
    Dim N, X
ed inserire il tuo codice di chiusura al posto del " 'esegui codice " che ti ha indicato.
Lurik_f
00martedì 24 maggio 2016 23:56
Grazzzzieeee!!!
Lurik_f
00mercoledì 25 maggio 2016 19:01
Accidenti ho cantato vittoria troppo presto!!!

Inserendo il codice di Raffaele e aggiungendo, come suggerito da Rollis cancel=true all'inizio del codice non ottengo comunque quello che vorrei.

Ho bisogno che se da A8:A37 sono vuoti il foglio si possa chiudere e salvare senza problemi.
Se anche solo una delle celle da A8:A37 è compilata allora il file non si può più chiudere/salvare se i 3 campi non sono compilati come descritto.

Ciao grazie Lurik [SM=x423023]


raffaele1953
00mercoledì 25 maggio 2016 21:19
Non ha un senso >>>essere sicuro che alcune celle siano compilate/modificate prima della chiusura del file.
Se lo apro e non desidero fare nulla, non posso più chiuderlo?
Casomai avrebbe senso se al momento di chiusura verifico le condizioni e se sono vere (allora salvo in un'altro file), lasciando l'originale ancora nelle medesime condizioni per la volta successiva.

Comunque va messo in ThisWorkbook
Cancel = False va messo sotto MsgBox "celle corrispondenti"
Cancel = True va messo prima di End If
Lurik_f
00mercoledì 25 maggio 2016 21:56
Ma si che ha senso Raffaele.... Il file fino a quando le celle da A8:A37 sono vuote puo essere aperto e chiuso senza condizioni. Il controllo deve scattare quando compilo una delle celle A8:A37. Quando una di queste è compilata devo essere certo che il file non sia chiuso e salvato senza aver compilato anche le altre 3.

Scusate se mi sono espresso male.
Domani mattina provo quello che mi hai scritto.

Grazie mille!!!!
raffaele1953
00mercoledì 25 maggio 2016 23:43
Errore = ero partito dalla cella 3
Sarà comunque se incolli il codice nel tuo allegato, voglio vedere come fai a chiuderlo se non lo compili le celle.
E se compilato cosa serve il VBA un domani?

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim N, X
For X = 8 To 37
    If Cells(X, 1) <> "" Then
        N = N + 1
    End If
Next X
 MsgBox N
If N <> 0 And [A2] <> "Campo1" And [F2] <> "" And [J2] <> "Campo3" Then
    MsgBox "celle corrispondenti"
    Cancel = False
    Application.EnableEvents = False
    ActiveWorkbook.Close SaveChanges:=True
    Application.EnableEvents = True
Else
    If N = 0 Then MsgBox "nessun dato in A8:A37"
    If [A2] = "Campo1" Then MsgBox "A2 = Campo1"
    If [F2] = "" Then MsgBox "F2 = vuoto"
    If [J2] = "Campo3" Then MsgBox "J2 = Campo3"
    Cancel = True
End If
End Sub
Lurik_f
00giovedì 26 maggio 2016 18:17
Ok grazie mille Raffaele [SM=x423028]
Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 02:05.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com