› Excel e gli applicativi Microsoft Office › Tabella con date: avviso di non lasciare celle vuote
-
AutoreArticoli
-
Ciao ragazzi al lavoro sto lavorando su una tabella che raccoglie nominativi e le date degli esami ematici aggiuntivi che i dipendenti richiedono oltre a quelli richiesti dall'azienda
Siccome scrivo anche le date in ci comunicano l'intenzione di fare esami aggiuntivi e anche la data cui faranno i prelievi pre evitare di dimenticarmi di segnare le date che poi sarebbero mancanti, si può fare un pop up, forse una convalida che nella colonna data se non c'è nulla esca un avviso del tipo "è necessario inserire una data"
ciao
devi legare la cella vuota ad un'altra
altrimenti tutte le vuote avranno un avviso
formattazione condizionale formula
=E($A1<>"";$B1="")
si applica a
$B$1:$B$1000
oppure si va al VBA
ma sempre ci deve essere una condizione da prendere in esame
pensavo piu' a qualcosa del tipo l'errore che ti da la convalida dati se sbagli l'inserimento dei dati.... una finestra che ti dica "ehi hai sbagliato"
ciao
si può fare se sappiamo cosa scatena l'evento
ma non lo sappiamo..........
in pratica dobbiamo sapere che cella viene compilata
per attivare l'inserimento della data
in pratica le date sono in colonna B e C e non devono essere vuote, può esserci la B già piena ma la C mancante e andrebbe segnalato sia se mancano entrambe o anche una sola
Allego file
ciao
premessa
io con il vba non ci vado d'accordo
comunque questa macro se attivi una cella della colonna A
ti obbliga a scivere una data selle due colonne successive
è spartana e spero qualcuno la semplifichi
Private Sub Worksheet_Change(ByVal Target As Range) Dim stringa_Data As String On Error GoTo E If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then If Target.Value <> "" Then If Target.Offset(0, 1) = "" Then stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", _ "Data Inputbox", Format(Now(), "dd/mm/yyyy")) If IsDate(stringa_Data) Then stringa_Data = Format(CDate(stringa_Data), "dd/mm/yyyy") Target.Offset(0, 1) = stringa_Data Else MsgBox "formato data non valido" End If End If End If End If If Target.Offset(0, 1) <> "" Then If Target.Offset(0, 2) = "" Then stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", _ "Data Inputbox", Format(Now(), "dd/mm/yyyy")) If IsDate(stringa_Data) Then stringa_Data = Format(CDate(stringa_Data), "dd/mm/yyyy") Target.Offset(0, 2) = stringa_Data Else MsgBox "formato data non valido" End If End If End If E: Exit Sub End Subti allego il file
se hai celle con una data sola
basta attivare la cella in A con F2
Molto bella, peccato che tocca scrivere la data al contrario, se scrivo 8/10 lui restituisce 10/8 per intenderci ti fa scrivere il formato all'inglese.
cambia così
Private Sub Worksheet_Change(ByVal Target As Range) Dim stringa_Data As String On Error GoTo E If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then If Target.Value <> "" Then If Target.Offset(0, 1) = "" Then stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", _ "Data Inputbox", Format(Now(), "dd/mm/yyyy")) If IsDate(stringa_Data) Then stringa_Data = Format(CDate(stringa_Data), "mm/dd/yyyy") Target.Offset(0, 1) = stringa_Data Else MsgBox "formato data non valido" End If End If End If End If If Target.Offset(0, 1) <> "" Then If Target.Offset(0, 2) = "" Then stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", _ "Data Inputbox", Format(Now(), "dd/mm/yyyy")) If IsDate(stringa_Data) Then stringa_Data = Format(CDate(stringa_Data), "mm/dd/yyyy") Target.Offset(0, 2) = stringa_Data Else MsgBox "formato data non valido" End If End If End If E: Exit Sub End Subciao,
ed un saluto a Gianfranco
allego file con il mio contributo, sicuramente migliorabile,
che funziona al variare del range("a2:a1000")
ciao
Frank
Private Sub Worksheet_Change(ByVal Target As Range) Dim stringa_Data As String, avviso As Integer If Not Intersect(Target, Range("A2:A1000")) Is Nothing Then If Selection.Count > 1 Then Exit Sub ElseIf Len(Target) <> 10 Then Target.Activate avviso = MsgBox("Formato data non valido, correggi la data", vbCritical, "Errore formato data") Exit Sub ElseIf Target.Value = "" Then avviso = MsgBox("Devi compilare la colonna A", vbCritical, "Errore compilazione") Exit Sub ElseIf Target.Value <> "" And Target.Offset(0, 1).Value = "" Then avviso = MsgBox("Devi compilare entrambe le colonne A e B", vbCritical, "Errore compilazione") stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", "Data Inputbox") If Len(stringa_Data) <> 10 Then avviso = MsgBox("Formato data non valido", vbCritical, "Errore formato data") stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", "Data Inputbox") End If Target.Offset(0, 1).Value = CDate(stringa_Data) End If End If End Subciao Tanimon
vbaisti del piffero
lo sapevo che vi istigavo
comunque alla mia macro (se così la vogliamo chiamare)
manca l'obbligo all'inserimento, è solo un avviso
e dove sarebbe l'obbligo di inserire la data @talimon?
excel fa salvare il file anche vuoto, non appare nessun avviso, per altro alleghi un file vuoto non è molto comprensibile il risultato
non mi esce piu' il box con F2 in colonna A @gianfranco55
ok,
ho volutamente allegato un file senza dati, ma prima di allegarlo ho provato ad utilizzarlo,
E' chiaro che tu non ci hai neanche provato.....
e se lo vuoi slvare vuoto... è una tua scelta, mica mia....
Passo e CHIUDO!
ma provato a fare cosa, se non ho la tabella di appoggio dove la inserisco la data o il nome?
in pratica le date sono in colonna B e C e non devono essere vuote, può esserci la B già piena ma la C mancante e andrebbe segnalato sia se mancano entrambe o anche una sola
questo lo hai scritto tu,
io ho sbagliato ad applicarlo sulle colonne A:B
Visto che sei il diretto interessato, prova a fare qualcosa anche tu, qualcuno ti darà sicuramente una mano
mi viene cosi, non so sera quello che volevi ottenere, inserendo il nome viene questo avviso,
più che formato data non valido andrebbe scritto inserire data mancante
andava già bene quello fatto in precedenza solo che per dovevo scrivere la data al contrario, la data va bene ma serve scritta in formato giorno mese non il contrario

Ok e i nomi li hai inseriti in colonna A per provare il risultato della modifica?
cambia così
in realtà va bene in parte cioè
ora la data è nel formato corretto ma una volta scritto il nome in colonna A lui la data la fa mettere in colonna B ma non ti avvisa che la colonna C ha la data mancante e poi inserendo il nome il cursore si punta in colonna B lasciando cmq vuota la C e non ti da ne l'avviso e ne ti propone una seconda data. Credo che una volta inserita la data in colonna B servirebbe un altro box che ti proponga la data da mettere in colonna C, che poi la metti o non la metti a tua discrezione ma intanto ti avvisa
ciao
ma se si aprono di seguito due inputbox
una inserisce in B e l'altra in C
se ne manca in B interviene la seconda inputbox
prova ora e vedi le imput ti dicono nell'intestazione dove inseriscono la data
Si ho visto dopo, ma non c'è modo di scrivere a cosa si riferisce? bisogna per forza lasciare imput box, non si può scrivere testo a piacere?
ciao
ti ho messo il file sopra con le indicazioni sulle input
Ok visto, la scritta data a fianco della scritta in maiuscolo nell'imput box deve esserci per forza?
ciao
certo che no
questa è la stringa di codice che si usa ora
stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", _
"Data COMUNICATO", Format(Now(), "dd/mm/yyyy"))vuoi senza Data semplice la cambi
stringa_Data = InputBox("Inserisci Data in formato dd/mm/yyyy", _
"COMUNICATO", Format(Now(), "dd/mm/yyyy"))Fatto e funziona perfettamente!! Grazie @gianfranco55!
bene che funzioni
gentilmente se hai risolto chiudi la discussione
grazie
-
AutoreArticoli
