Condividi tramite

Convalida dati multipla

Anonimo
2011-02-09T10:52:35+00:00

Un saluto a tutti.

in colonna A e C del foglio1 ho delle date, rispettivamente di inizio operazione in colonna A ed in colonna C quella di scadenza. Per il momento ho inserito su entrambe le colonne la convalida dati dove dico che l'input deve essere una data e che deve essere maggiore del 01/01/2010 per la data di inizio e del 01/01/2011 per la data di scadenza. Vorrei aggiungere un ulteriore controllo di "convalida" sulla data di scadenza che deve essere ovviamente maggiore della data di inizio.

E' possibile avere una doppia convalida sullo stesso input solo tramite le funzionalità di excel senza rivolgersi a VBA? Qualora non fosse possibile mi suggerite per favore il codice VBA?

Grazie.

Microsoft 365 e Office | Excel | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2011-02-09T16:25:17+00:00

Ok,

ti ringrazio per la segnalazione e chiedo scusa per la svista.

Questo il codice con la dichiarazione esplicita delle due variabili

<cut>

Non è che così sia molto meglio... se seleziono e cancello più celle, che succede? prova ad aggiungere:

If Target.Cells.Count = 1 Then

    'codice

End If

Inoltre, per favore, fai questa prova. Scrivi 1/5/2011 in cella A1 del Foglio1 e poi lancia questa macro:

Public Sub m_1()

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio2")

    With sh

        If .Range("A1").Value = #1/5/2010# Then

            MsgBox "Uguale"

        Else

            MsgBox "Diverso"

        End If

    End With

    Set sh = Nothing

End Sub

E vedi invece  risultato di questa:

Public Sub m_2()

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio2")

    With sh

        If .Range("A1").Value = CDate("1/5/2011") Then

            MsgBox "Uguale"

        Else

            MsgBox "Diverso"

        End If

    End With

    Set sh = Nothing

End Sub

Le date non sono così semplici da gestire fra vb ed Excel. Il formato del vb(americano: mm/dd/yyyy) e quello di Excel(il nostro per via della localizzazione: dd/mm/yyyy) vanno  normalizzati. Grazie per l'attenzione.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

Risposta accettata dall'autore della domanda

Anonimo
2011-02-09T14:44:35+00:00

Un saluto a tutti.

in colonna A e C del foglio1 ho delle date, rispettivamente di inizio operazione in colonna A ed in colonna C quella di scadenza. Per il momento ho inserito su entrambe le colonne la convalida dati dove dico che l'input deve essere una data e che deve essere maggiore del 01/01/2010 per la data di inizio e del 01/01/2011 per la data di scadenza. Vorrei aggiungere un ulteriore controllo di "convalida" sulla data di scadenza che deve essere ovviamente maggiore della data di inizio.

E' possibile avere una doppia convalida sullo stesso input solo tramite le funzionalità di excel senza rivolgersi a VBA? Qualora non fosse possibile mi suggerite per favore il codice VBA?

Grazie.

Prova: la convalida di A la lasci com'è. La convalida di C. Seleziona le celle(o la colonna). Data inizio: =A1 (o mett il riferimento alla cella A(n) della prima cella della selezione). Data fine: Quella impostata come data finale.


--

La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

--

Mauro Gamberini - Microsoft© MVP(Excel)

http://www.maurogsc.eu/

La risposta è stata utile?

0 commenti Nessun commento

8 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-02-09T14:40:09+00:00

    Ciao Paolo,

    in alternativa al link di RioLab ho buttato giù questo codice VBA

    Prova ad utilizzarlo.

    Private Sub Worksheet_Change(ByVal Target As Range)

        rigamodificata = Target.Cells.Row

        colonnamodificata = Target.Cells.Column

        If Target.Cells.Column = 1 Then

            'Colonna A --> Data Inizio

            If Target.Cells < #1/1/2010# Then

                MsgBox "La data è minore del 01/01/10"

                Exit Sub

            End If

        End If

       

        If Target.Cells.Column = 3 Then

            'Colonna C --> Data Fine

            If Target.Cells < #1/1/2011# Then

                MsgBox "Minore del 01/01/11"

                Exit Sub

            End If

            If Target.Cells < Cells(rigamodificata, (colonnamodificata - 2)) Then

                MsgBox "Minore della data di inizio attività"

                Exit Sub

            End If

        End If

       

    End Sub

    David

    Ciao David, benvenuto nel forum. Quando posti il codice, per favore, vedi che sia possibile utilizzarlo su tutti i pc, grazie. Il tuo codice su molti pc non girerà mai. Queste righe:

    rigamodificata = Target.Cells.Row

    colonnamodificata = Target.Cells.Column

    scatenano una eccezione(errore) nel caso sia stata impostata la dichiarazione obbligatoria delle variabili(Strumenti-->Opzioni, scheda: Editor). La spunta a quella voce è la prima cosa che normalmente si fa dopo l'installazione di Excel se si decide di automatizzare i files tramite vb, vuoi per avere una maggior robustezza del codice, vuoi per essere sicuri che le macro *girino* ovunque.


    --

    La soluzione, il codice ed i files sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dalla soluzione proposta se usata impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare la soluzione in files importanti.

    --

    Mauro Gamberini - Microsoft© MVP(Excel)

    http://www.maurogsc.eu/

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-02-09T14:14:24+00:00

    Ciao Paolo,

    in alternativa al link di RioLab ho buttato giù questo codice VBA

    Prova ad utilizzarlo.

    Private Sub Worksheet_Change(ByVal Target As Range)

        rigamodificata = Target.Cells.Row

        colonnamodificata = Target.Cells.Column

        If Target.Cells.Column = 1 Then

            'Colonna A --> Data Inizio

            If Target.Cells < #1/1/2010# Then

                MsgBox "La data è minore del 01/01/10"

                Exit Sub

            End If

        End If

        If Target.Cells.Column = 3 Then

            'Colonna C --> Data Fine

            If Target.Cells < #1/1/2011# Then

                MsgBox "Minore del 01/01/11"

                Exit Sub

            End If

            If Target.Cells < Cells(rigamodificata, (colonnamodificata - 2)) Then

                MsgBox "Minore della data di inizio attività"

                Exit Sub

            End If

        End If

    End Sub

    David

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2011-02-09T11:45:17+00:00

    Ciao Paolo,

    prova a guardare questo articolo pubblicato su RioLab, in fondo trovi anche un foglio di esempio

    http://www.riolab.org/index.php?option=com\_content&view=article&id=174:convalidare-dati-da-piu-colonne&catid=47:excel&Itemid=68

    David

    La risposta è stata utile?

    0 commenti Nessun commento