Selezione voce in combo da VBA

di il
9 risposte

Selezione voce in combo da VBA

Salve a chi legge e a chi risponde.

Il mio problema di questa mattina è quello di avviare una selezione automaticamente di una voce di una casella combinata da VBA.
Ho verificato che la voce esiste ma se inserisco la sua posizione nel comando, la combo non fa una grinza. Come se nulla fosse stato.
La selezione manuale funziona regolarmente.
Di sicuro sto omettendo qualcosa, ma di più non so.

Nota: (credo non sia importante)
La maschera che contiene la combo può essere caricata stand alone oppure da " M_Ent_Progetti ".
E' per questo che al caricamento faccio un test

Posso ricevere un aiuto in merito?
grazie

Private Sub Form_Load()
    If CurrentProject.AllForms("M_Ent_Progetti").IsLoaded Then
        Dim k
        For k = 0 To Me!CasellaCombinata99.ListCount
            If Val(Me!CasellaCombinata99.Column(0, k)) = Forms!M_Ent_Progetti![id_evento] Then
                Me!CasellaCombinata99.Selected(k) = True      '   " Riga X "
                Exit For
            End If
        Next
    End If
    Me![vedo] = "Visibilità"
End Sub

9 Risposte

  • Re: Selezione voce in combo da VBA

    La combo non è la ListBox che devi andare a forzare il Selected...
    Prova a fare questo e dimmi che succede
    
    Me!CasellaCombinata99 = Forms!M_Ent_Progetti![id_evento]
    Ovviamente do per assunto che la Colonna di indice(0) sia la BoundColumn...
    Se poi devi anche generare l'evento AfterUpdate... lo chiami...
    Call CasellaCombinata99_AfterUpdate()
  • Re: Selezione voce in combo da VBA

    Mio caro Alex, ho afferrato il concetto ma vorrei capire di più.

    Sì, la colonna bound della COMBO è l'ID, è la prima di tre, ma non è visualizzata. Per cui nella casella della combo mi ritrovo un numero inatteso.
    Così come suggerivi effettuo la call e quì ? :

    Occorre ridisegnare la COMBO
    Come correggo la visualizzazione del campo nella COMBO la quale non ha un legame con il campo numerico dell'ID che ci ho trovato dentro?

    Sono un pò bloccato su questo...
  • Re: Selezione voce in combo da VBA

    Se ti dico che non ho capito nulla....?
  • Re: Selezione voce in combo da VBA

    Io mi capisco benissimo. Purtroppo io.
    Nella mia combo ho tre campi: ID_evento, nome_evento e tipo.
    Solo nome_evento è visualizzabile; gli altri hanno lunghezza zero.
    Quando importo ID_evento dalla maschera madre, con l'istruzione
    Me!CasellaCombinata99 = Forms!M_Ent_Progetti![id_evento]
    mi ritrovo un numero che alla combo non dice niente.
    L'operazione che devo fare nella Call CasellaCombinata99_AfterUpdate() è anche quella di cercare
    il numero dell'ID appena arrivato tra gli oggetti della combo (prima colonna invisibile) e visualizare il testo <nome_evento> ad esso associato.
    Giusto?
    Chiedevo solo una conferma.
  • Re: Selezione voce in combo da VBA

    Anche se la Larghezza della Colonna(0) è Zero, il campo Bound funziona, quindi quello che ti ho scritto io, in base a quello che hai detto, funziona.
    Quindi se assegni alla Combo un Valore compreso nel suo RowSource alla Colonna(Bound) devi visualizzare quanto rispettivamente a quel Item, è nella prima colonna Visibile, ovvero con Larghezza>0.
    Se così non accade è un problema da indagare.

    Per poi sincronizzare la Form con quello secondo me stai facendo un giro pindarico assurdo... anche se funziona.
    Mi chiedo se non puoi aprire la Maschera passando un ARGS e spostando poi il Bookmark... e sincronizzando la Combo..., ma c'è qualche cosa che devi chiarirti...
  • Re: Selezione voce in combo da VBA

    Ho letto/riletto più volte il tutto. Non sono intervenuto perché pensavo che (tutto sommato) @Alex sarebbe riuscito sempre a comprendere e sbrogliare "qualsiasi" matassa. Ma mi associo ai dubbi riguardo la comprensione di quello che devi fare.

    antocuomo ha scritto:


    Il mio problema di questa mattina è quello di avviare una selezione automaticamente di una voce di una casella combinata da VBA.
    Non basterebbe un valore predefinito?

    antocuomo ha scritto:


    Ho verificato che la voce esiste ma se inserisco la sua posizione nel comando, la combo non fa una grinza. Come se nulla fosse stato.
    Qua c'è il mio buio totale nella comprensione. Potresti fare un esempio?

    antocuomo ha scritto:


    La maschera che contiene la combo può essere caricata stand alone oppure da " M_Ent_Progetti ".E' per questo che al caricamento faccio un test
    Che cos'è questa cosa? A cosa ti serve?

    Riguardo le impostazioni colonne della casella combinata...ha già risposto @Alex. Per essere sicuri al 100%, potresti elencare i valori delle Proprietà significative della casella combinata? Ossia:
    Numero colonne
    Colonna associata
    Larghezza colonne
    Larghezza elenco

    Puoi rispiegare tutto usando i nomi propri di tutti gli oggetti (nomi maschere, nomi controlli, origini controlli…)?
  • Re: Selezione voce in combo da VBA

    
    Private Sub Form_Load()
        CasellaCombinata99.BoundColumn = 1     ' questa riga mancava
        If CurrentProject.AllForms("M_Ent_Progetti").IsLoaded Then
            Me!CasellaCombinata99 = Forms!M_Ent_Progetti![id_evento]
            Call CasellaCombinata99_AfterUpdate
        End If
    End Sub
    
    Caro Alex, non posso fare altro che vergognarmi.
    Solo ora, e dopo aver rivolto la giusta attenzione alla direzione del tuo dito indice, ho potuto capire il vero significato di BoundColumn.

    Ho letto la guida, ho imparato, l'ho usato.
    Tutto ok. Vado avanti.
    Grazie e alla prossima.
    antonio cuomo
  • Re: Selezione voce in combo da VBA

    Non c'è bisogno di gestire da VBA la BoundColumn...
    Se vai nella Tab delle proprietà in modalità Struttura, alla Tab(Dati)--->Colonna Associata=1

    Questo lo rende strutturale...

    Ciao
  • Re: Selezione voce in combo da VBA

    D'accordo, grazie
Devi accedere o registrarti per scrivere nel forum
9 risposte