Forzare in ordine numerico delle caselle combinate tramite VBA

di il
3 risposte

Forzare in ordine numerico delle caselle combinate tramite VBA

Ciao,

ho strutturato sulla maschera con le caselle combinate in gerarchia con TAG a "X", inserisco i codici nell'evento dopo aggiornamento della  prima casella combinata:

getRequery

e

Private Function getRequery()
Dim ctl As Access.Control

    For Each ctl In Me.Controls
        If ctl.Tag = "X" Then
            If ctl.ControlType = acComboBox Then
                ctl.Requery
                    If ctl.ListCount <= 1 Then ctl = ctl.ItemData(0)
            End If
        End If

    Next
    Set ctl = Nothing
End Function

Fin qui tutto funziona ma ho notato facendo delle prove usando TabIndex che seleziona le caselle combinate prima a 6 poi a 3 poi a 5, ecc...

Da notare che sulla maschera le caselle combinate in gerarchia sono già in ordine di tabulazione ma in VBA non va come dovrebbe...

ciò che vorrei è che possano essere in ordine numerico forzato, se avete i suggerimenti da fare vi ringrazio.

Saluti

3 Risposte

  • Re: Forzare in ordine numerico delle caselle combinate tramite VBA

    Secondo me puoi risolvere in modo più semplice.

    Se adotti un sistema di nomenclatura per i ComboBox che sia numericamente progressivo, tipo:

    cmbCascata1, cmbCascata2, cmbCascata3, cmbCascata4, ....

    Puoi lanciare il requery di ognuno con un ciclo For...Next:

    For i = 1 To 4   '-> Oppure il numero massimo dei tuoi controlli
        With Me.Controls("cmbCascata" & i)
            .Requery
            If .ListCount <= 1 Then .Value= .ItemData(0)
        End With
    Next i

    In questo modo ti rendi completamente indipendente dalla posizione sul form, dalla sequenza di tabulazione e, soprattutto, eviti di analizzare controlli che non fanno parte del tuo sistema a cascata, visto che il tuo codice cicla comunque tutti i controlli del form.

    TheTruster

  • Re: Forzare in ordine numerico delle caselle combinate tramite VBA

    12/01/2026 - TheTruster ha scritto:

    For i = 1 To 4 '-> Oppure il numero massimo dei tuoi controlli Me.Controls("cmbCascata" & i).Requery Next i

    Ottimo, così va molto meglio, grazie.

  • Re: Forzare in ordine numerico delle caselle combinate tramite VBA

    Grazie a te per il riscontro

    TheTruster

Devi accedere o registrarti per scrivere nel forum
3 risposte