Condividi tramite

Codice vba per verificare convalida dati

Anonimo
2012-09-04T16:16:48+00:00

Ciao a tutti.

Non son riuscito a trovare il comando vba giusto per verificare se in una cella è presente la convalida dati.

(tanto per capirci sul tipo di :    cells(x,y).HasFormula )

Qualcuno mi può aiutare?

Grazie, ciao.

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
2012-09-04T16:29:47+00:00

Ciao a tutti.

 

Non son riuscito a trovare il comando vba giusto per verificare se in una cella è presente la convalida dati.

(tanto per capirci sul tipo di :    cells(x,y).HasFormula )

 

Qualcuno mi può aiutare?

 

Grazie, ciao.

Questa ti dice quali celle sono validate:

Public Sub m()

    Dim sh As Worksheet

    On Error Resume Next

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        MsgBox .UsedRange.SpecialCells(xlCellTypeAllValidation).Address

    End With

    On Error GoTo 0

    Set sh = Nothing

End Sub

Questa ti dice se una cella del Foglio1 è validata:

Public Sub m()

    Dim sh As Worksheet

    Dim rng As Range

    Set sh = ThisWorkbook.Worksheets("Foglio2")

    On Error Resume Next

    With sh

        Set rng = .UsedRange.SpecialCells(xlCellTypeAllValidation)

        If Intersect(.Range("A2"), rng) Is Nothing Then

            MsgBox "Cella senza Validazione"

        Else

            MsgBox "Cella con Validazione"

        End If

    End With

    On Error GoTo 0

    Set rng = Nothing

    Set sh = Nothing

End Sub

O, stessa cosa:

Public Sub m()

    Dim sh As Worksheet

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    On Error Resume Next

    With sh

        If .Range("A1").SpecialCells(xlCellTypeSameValidation).Cells.Count < 1 Then

            MsgBox "Cella senza Validazione"

        Else

            MsgBox "Cella con Validazione"

        End If

    End With

    On Error GoTo 0

    Set sh = Nothing

End Sub

La risposta è stata utile?

0 commenti Nessun commento

4 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2012-09-04T19:32:44+00:00

    Perfetto, capito, grazie.

    Una curiosità; perchè nel caso 2 (verificare la singola cella) nella

    1° soluzione utilizzi

    xlCellTypeAllValidation

     

    mentre nella 2° soluzione utilizzi

    xlCellTypeSameValidation

     

    C'è un motivo particolare? Ho provato sempre con

    xlCellTypeAllValidation

    e mi sembra funzioni ugualmente.

     

    Grazie ancora, ciao

    Provavo cose diverse.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2012-09-04T17:57:50+00:00

    Perfetto, capito, grazie.

    Una curiosità; perchè nel caso 2 (verificare la singola cella) nella

    1° soluzione utilizzi

    xlCellTypeAllValidation

    mentre nella 2° soluzione utilizzi

    xlCellTypeSameValidation

    C'è un motivo particolare? Ho provato sempre con

    xlCellTypeAllValidation

    e mi sembra funzioni ugualmente.

    Grazie ancora, ciao

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2012-09-04T17:21:54+00:00

     

    per veriuficare la singola cella c. visto che se la convalida dati non c'è mi da un errore di run-time?

     

    Sono io che non capisco qualcosa?? (probabile) :-)

     

    Grazie, ciao.

    Ho esteso e corretto(grazie per la segnalazione) il primo post. Vedi un po' se va bene.

    Ti posto comunque un ciclo:

    Public Sub m()

         Dim sh As Worksheet

         Dim rng As Range

         Dim c As Range

         Set sh = ThisWorkbook.Worksheets("Foglio1")

         With sh

            Set rng = .Range("A1:A10")

            For Each c In rng

                On Error Resume Next

                If c.SpecialCells(xlCellTypeSameValidation).Cells.Count >= 1 Then

                    If Err.Number = 0 Then

                        MsgBox c.Address & " - Cella con Validazione"

                        'tuo codice

                    End If

                End If

                On Error GoTo 0

             Next

         End With

         Set c = Nothing

         Set rng = Nothing

         Set sh = Nothing

     End Sub

    Fai sapere, grazie.

    La risposta è stata utile?

    0 commenti Nessun commento
  4. Anonimo
    2012-09-04T17:18:30+00:00

    Ciao, grazie per la risposta.

    Però il tuo codice, se non ci sono celle con convalida, restituisce un errore di run-time.

    Spiego meglio il mio problema:

    all'interno di una routine, devo verificare se le cella ha una convalida dati, per cui

    Public Sub m()

    Dim sh As Worksheet

    Dim rng As Range

    Dim c As Range

    Set sh = ThisWorkbook.Worksheets("Foglio1")

    With sh

        Set rng = .Range("A1:A10")

        For Each c In rng

            If c.  '''HA CONVALIDA DATI'''    Then

                '''MIO CODICE

            End If

        Next c

    End With

    Set sh = Nothing

    Set rng = Nothing

    Set c = Nothing

    End Sub

    Come posso utilizzare

    .SpecialCells(xlCellTypeAllValidation)

    per veriuficare la singola cella c. visto che se la convalida dati non c'è mi da un errore di run-time?

    Sono io che non capisco qualcosa?? (probabile) :-)

    Grazie, ciao.

    La risposta è stata utile?

    0 commenti Nessun commento