Valore variabile di tipo control

di il
7 risposte

Valore variabile di tipo control

Ciao a tutti,
Ho dichiarato una variabile di tipo control e la utilizzo in un ciclo for per fare il giro di tutti i controlli di una form eseguendo varie operazioni. Avrei bisogno, all'interno del ciclo for, di recuperare il valore contenuto nelle caselle di testo che il ciclo richiama, qualche dritta? Per la variabile di tipo control vedo che posso intervenire solo sulle proprietà.. Quando arrivo a casa posto il codice..
Grazie in anticipo

7 Risposte

  • Re: Valore variabile di tipo control

    Infatti non si capisce quello che chiedi...
  • Re: Valore variabile di tipo control

    Scusate, immaginavo che la richiesta potesse risultare incomprensibile ..
    Dim ctl As control
    For Each ctl In Me.Controls
    
    	If Left(ctl, 1) = "9" Then
    	
            ' fai qualcosa...
            	
    	End If
    Next
    in poche parole ho bisogno di poter utilizzare il valore contenuto nei controlli che il ciclo for scansiona

    vediamo se ora si capisce
  • Re: Valore variabile di tipo control

    Puoi prendere spunto da questa discussione

    https://stackoverflow.com/questions/13290099/loop-through-textboxes-in-access-database

    ?

    Provaci
  • Re: Valore variabile di tipo control

    oregon ha scritto:


    Puoi prendere spunto da questa discussione

    https://stackoverflow.com/questions/13290099/loop-through-textboxes-in-access-database

    ?

    Provaci
    grazie per lo spunto, intuisco che possa esserci la soluzione... passare per le textbox...

    domani aggiorno

    PS: oregon ti leggo e mi sembri quello con il miglior rapporto umiltà/competenza, complimenti!

    grazie
  • Re: Valore variabile di tipo control

    Non serve passare per la textbox l'oggetto Control che nel tuo caso è ctl è già quello che ti serve...
    Sinceramente dall'esempio che hai postato continuo a non capire il senso della domanda dal momento che stai già leggendo in modo implicito la proprietà Value del controllo.
  • Re: Valore variabile di tipo control

    @Alex ha scritto:


    Non serve passare per la textbox l'oggetto Control che nel tuo caso è ctl è già quello che ti serve...
    Sinceramente dall'esempio che hai postato continuo a non capire il senso della domanda dal momento che stai già leggendo in modo implicito la proprietà Value del controllo.
    se utilizzo 'ctl' oppure 'ctl.value' mi da l'errore di runtime '438': proprietà o metodo non supportati dall'oggetto.
    passando per una textbox posso utilizzare 'txtb.value'

    ho risolto così:
    
    Dim ctl As Control
    Dim txtb As TextBox
    
    For Each ctl In Me.Controls
        
    	If TypeOf ctl Is TextBox Then Set txtb = ctl
    	ElseIf Left(txtb.value, 1) = "9" Then ctl.BackColor = VBA.RGB(82, 246, 250)
       	End If
    Next
    se ci fosse la soluzione per usare direttamente il valore di un oggetto control sono tutt'orecchi

    grazie a tutti
  • Re: Valore variabile di tipo control

    Innanzitutto il codice come lo hai scritto non può funzionare... manca un IF dal momento in cui il 1° è chiuso subito...!
    Secondo ho provato questo codice e non ho nessun problema.. nessun errore e tutte le proprietà vengono lette

    Secondo me tu stai confondendo l'uso dell'oggetto Esplicito come la TextBox e la possibilità di Attivare l'intellisense che espone nel VBA le proprietà... ma non hai capito che in questo caso di LATEBINDING, perchè l'associazione di TIPO è tardiva, non puoi farlo... in quanto l'oggetto è Generico...!
    Quando dichiari una Classe come Object non vedrai mai Proprietà/MEtodi/Eventi ma assolutamente li puoi usare.
        Dim ctl As Access.Control
        Dim txtb As TextBox
    
        For Each ctl In Me.Controls
            If TypeOf ctl Is TextBox Then
                Debug.Print ctl.Value
                If Left(ctl.Value, 1) = "9" Then   <----- BREACHPOINT
                    ctl.BackColor = VBA.RGB(82, 246, 250)
                End If
            End If
        Next
    Quindi fai DEBUG e metti BreachPoint sul punto Indicato ed apri la finestra immediata troverai stampato il VALUE come detto.
Devi accedere o registrarti per scrivere nel forum
7 risposte