IALweb Homepage
Forum Home Forum Home > MS Office > Microsoft Office > Microsoft Excel
  New Posts New Posts RSS Feed - [RISOLTO] Formattare colonne come campo data
  FAQ FAQ  Forum Search   Events   Register Register  Login Login

REGISTRATEVI su IALWeb forum! E' facile e veloce! Potrete consultare tutte le sezioni del forum senza restrizioni e scrivere per dare o richiedere aiuto.
Votaci in Net-Parade

[RISOLTO] Formattare colonne come campo data

 Post Reply Post Reply Page  12>
Author
Message
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Topic: [RISOLTO] Formattare colonne come campo data
    Posted: 10/Ott/2017 at 16:20
Ciao a Tutti,

ho ereditato un file excel in cui ci sono 4 colonne che riportano in riga 1 il seguente nome corrispondente:

Data di nascita (gg/mm/aaaa)
Data assunz.  (gg/mm/aaaa)
Inizio
Fine 

questi nomi di colonna devono rimanere tali.

Dalla riga 2 in poi occorre impostare il formato data personalizzato gg/mm/aaaa
affinchè l' utente scriva le date in maniera congrua.

Il problema è che ogni unità ha il suo file (template) che, oltre a queste 4 colonne può ospitare altre colonne, specifiche di unità.

Quindi le 4 colonne fisse sopracitate, sono presenti nel foglio ma possono essere spostate di posizione.

Quindi chiederei se è possibile l' approccio tramite macro:
guarda le colonne nel foglio "Persone" che corrispondono ai nomi suddetti,
quando le trovi imponi che dalla riga 2 fino alla fine colonna, il formato data sia quello prescelto.

Inoltre è meglio mettere tramite Convalida_dati un messaggio di errore se uno digita male la data ??

Grazie mille in anticipo !!!

Ulteriori idee sono ben accette ....



Edited by il_betto - 17/Ott/2017 at 15:50
Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 205
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 10/Ott/2017 at 19:17
Ciao
come al solito, senza file d'esempio, andiamo a ... spanna.

Se nel foglio "Persone" ci sono le colonne con quelle intestazioni (non "nomi") che hai indicato la cosa è fattibile ma, mi chiedo e ti chiedo, perchè andare a scomodare VBA quando basterebbe formattare le colonne in questione in maniera corretta al momento di distribuire i file?
Anche il messaggio che vorresti mettere, perchè non farlo con una Convalida dati prima di distribuire i file?

Ciao,
Mario
Back to Top
dodo47 View Drop Down
Moderatore
Moderatore
Avatar

Joined: 29/Dic/2008
Location: Italy
Status: Offline
Points: 9168
Post Options Post Options   Thanks (0) Thanks(0)   Quote dodo47 Quote  Post ReplyReply Direct Link To This Post Posted: 10/Ott/2017 at 19:20
Ciao
visto che quelle intestazioni possono essere in colonne diverse credo che la tua soluzione sia corretta.
Prova a svilupparlo in autonomia con il registratore di macro, es:
-   selezioni il foglio "Persone" 
-   fai un find in riga 1 di Data di nascita (gg/mm/aaaa)
-   una volta trovato, assegni alla colonna il formato voluto.

e così via.

Poi decidi se adattare la sub risultante per l'evento open del documento.

saluti
domenico
win 10- office 2010
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 11/Ott/2017 at 15:14
Ciao Marius, Ciao dodo,

Grazie x i preziosi consigli !!

Nel file allegato:


ho seguito la strada di creare una Convalida dati in cui ho settato la data come voglio (vedi esempio nel file)

E così mi sembra che sia la soluzione più veloce ed indolore per risolvere il problema.

La Convalida_dati la applico su tutta la colonna interessata e poi,
siccome in riga 1 vi è l' intestazione, tolgo la convalida solo nella cella della prima riga .... Smile


Edited by il_betto - 12/Ott/2017 at 15:11
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 11/Ott/2017 at 15:49
C' è però una cosa che adesso ho verificato:

sebbene abbia applicato la Convalida_dati ad un range di celle ampio,
se faccio su una di esse il Copia / Incolla di un valore errato :es. 5-may-02
viene accettato e ciò non va bene.

Pertanto, per ovviare a ciò, ho inserito in VBA nel foglio Persone una macro che ho copiato in internet che impedisce sia il Taglia / Incolla che il Copia / Incolla su celle che hanno la Convalida_dati,
dando un messaggio di divieto di questa operazione. (vedi codice file allegato)

Ho provato ad applicare la macro, ma non funziona come deve,
mi impedisce di fare il Copia / Incolla anche se sono fuori dal range IntervalloDaValidare Ouch

inoltre non riesco a scrivere un valore in qualsiasi colonna senza la Convalida Cry


Grazie come sempre x l' aiuto !!


Edited by il_betto - 12/Ott/2017 at 15:59
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 12/Ott/2017 at 16:46
ho provato questa sub:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("$C$2:$C$500,$F$2:$F$500")) Is Nothing Then
    Application.CutCopyMode = False
End If
End Sub

che funziona in quanto mi impedisce, all' interno del range selezionato,
 di fare il Copia / Incolla di un valore preso da una cella del foglio.

Ma le limitazioni sono 2:

avevo creato il nome IntervalloDaValidare così costituito:
=Persone!$C$2:$C$500;Persone!$F$2:$F$500
e non sono stato in grado inserirlo all' interno della sub

Inoltre, cosa più importante, se faccio copia di un valore preso ad es. da NotePad e faccio Incolla all' interno del range di celle proibito, l' incolla purtroppo avviene regolarmente ... Ouch


Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 12/Ott/2017 at 17:33
Ho provato anche a mettere nel modulo del foglio "Persone" il seguente codice:

Private Sub Worksheet_Change(ByVal Target As Range)
    CheckValidation Target
End Sub
Sub CheckValidation(r As Range)
    Dim rChk        As Range
    Dim cell        As Range
    Dim iVal        As XlDVType
 
    On Error Resume Next
    Set rChk = Intersect(r, r.Worksheet.Names("IntervalloDaValidare").RefersToRange)
    If Err.Number <> 0 Or rChk Is Nothing Then Exit Sub
 
    For Each cell In rChk
        iVal = cell.Validation.Type
        If Err.Number Then
            Err.Clear
            Application.EnableEvents = False
            Application.Undo
            Application.EnableEvents = True
            MsgBox Prompt:="Last operation canceled." & vbLf & vbLf & _
                           "It would have deleted data validation rules.", _
                   Buttons:=vbCritical, _
                   Title:="Oops!"
            Exit Sub
        End If
    Next cell
End Sub

ma il critico Copy / Paste funziona sempre ... mannaggia Angry



Edited by il_betto - 12/Ott/2017 at 17:34
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 13/Ott/2017 at 16:29
Ho provato le diverse soluzioni che ho trovato in internet ma non ne vengo fuori .... Dead
Back to Top
il_betto View Drop Down
Veterano
Veterano
Avatar

Joined: 13/Giu/2011
Status: Offline
Points: 2532
Post Options Post Options   Thanks (0) Thanks(0)   Quote il_betto Quote  Post ReplyReply Direct Link To This Post Posted: 13/Ott/2017 at 17:09
Questo codice mi potrebbe andar bene per inibire il Copia / Incolla solo all' interno del foglio di lavoro:

in "Questa_cartella_di_lavoro" non ho messo niente...
solo nel foglio "Persone" ho inserito il seguente codice:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("IntervalloDaValidare")) Is Nothing Then
       Application.CutCopyMode = True
' Else
'       MsgBox Prompt:="Last operation canceled." & vbLf & vbLf & _
'                      "Operazione non consentita.", _
'                       Buttons:=vbCritical, _
'                       Title:="Oops!"
End If

End Sub

Con questo codice posso copiare ed incollare valori in celle fuori dal mio "IntervalloDaValidare".
Ho fatto delle prove e ho visto che funziona ma non compare nessun messaggio di errore se il Paste avviene nel range "IntervalloDaValidare".
Così ho provato a mettere un Msgbox che però non funziona tanto bene .... Ouch

Inoltre con questo codice se Copio dei valori presi da NotePad e li incollo nel range "IntervalloDaValidare" purtroppo ci si riesce e ciò non va bene OuchOuch

Back to Top
Marius44 View Drop Down
Utente Senior
Utente Senior
Avatar

Joined: 02/Gen/2017
Location: Catania
Status: Offline
Points: 205
Post Options Post Options   Thanks (0) Thanks(0)   Quote Marius44 Quote  Post ReplyReply Direct Link To This Post Posted: 13/Ott/2017 at 18:02
Ciao
spulciando fra le mi scartoffie ho recuperato questa macro
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnKey "^c"
Application.OnKey "^v"
End Sub

Private Sub Workbook_Open()
Application.OnKey "^c", "CopyMsg"
Application.OnKey "^v", "CopyMsg"
End Sub

Sub CopyMsg()
MsgBox "NON USARE IL COPIA E INCOLLA."
End Sub
Vedi se, opportunamente adattato, può servirti.
Ciao,
Mario 
Back to Top
 Post Reply Post Reply Page  12>
  Share Topic   

Forum Jump Forum Permissions View Drop Down

Forum Software by Web Wiz Forums® version 10.17
Copyright ©2001-2013 Web Wiz Ltd.

This page was generated in 0,062 seconds.