Valore ControlSource di una Textbox

di il
4 risposte

Valore ControlSource di una Textbox

Buongiorno,

Vorrei estrarre da una form i dati contenuti nella finestra delle proprietà di una casella di testo o di una combo.

Per estrarre i vari nomi creo un Set in cui inserisco la form e poi con una variabile di tipo controls leggo i vari nomi.

Vorrei fare la stessa cosa anche per i valori contenuti nei vari label delle proprieta e possibile

 Dim frm As Form
    Dim ctl As Control
    Set frm = Forms("test") 'seleziono ogni singola maschera
    ''' Leggo tutti i controlli
    For Each ctl In frm.Controls
        If TypeName(ctl) = "textBox" Or TypeName(ctl) = "ListBox" Or TypeName(ctl) = "ComboBox" Then
            Debug.Print frm.Name, ctl.Name
           Debug.Print ctl.Controls
        End If
    Next
    Set frm = Nothing

Grazie

4 Risposte

  • Re: Valore ControlSource di una Textbox

    E hai provato ad ampliare la If ?

  • Re: Valore ControlSource di una Textbox

    Penso di essermi spiegato male io vorrei visualizzare il contenuto, ad esempio del origine controllo della casella di testo Idcampo.

  • Re: Valore ControlSource di una Textbox

    Io non ho compreso il problema a pieno. 
    Per puntare sul valore di "Origine controllo" del controllo "IdCampo" della maschera "NomeMaschera", ti serve la sintassi
    Forms!NomeMaschera!IdCampo.ControlSource

    Però mi sfugge come vuoi controllare/gestire Forms!NomeMaschera considerato che sei riuscito a dichiarare

    Set frm = Forms("test") 'seleziono ogni singola maschera
  • Re: Valore ControlSource di una Textbox

    07/09/2025 - Scolaretto ha scritto:

    Buongiorno,

    Vorrei estrarre da una form i dati contenuti nella finestra delle proprietà di una casella di testo o di una combo.

    Per estrarre i vari nomi creo un Set in cui inserisco la form e poi con una variabile di tipo controls leggo i vari nomi.

    Vorrei fare la stessa cosa anche per i valori contenuti nei vari label delle proprieta e possibile

     Dim frm As Form
        Dim ctl As Control
        Set frm = Forms("test") 'seleziono ogni singola maschera
        ''' Leggo tutti i controlli
        For Each ctl In frm.Controls
            If TypeName(ctl) = "textBox" Or TypeName(ctl) = "ListBox" Or TypeName(ctl) = "ComboBox" Then
                Debug.Print frm.Name, ctl.Name
               Debug.Print ctl.Controls
            End If
        Next
        Set frm = Nothing

    Grazie

    Questa riga è relativamente errata, se  poi serve ti spiego cosa intendo per relativamente:

    Debug.Print ctl.Controls

    Tu in realtà vuoi ciclare le properties... quindi la cosa sarebbe più complessa, si tratta di un Ciclo For...Each sulla collection Properties, da li stampi la P.Name e la P.Value, ma se devi interrogare solo la property="ControlSource", non ha senso... interroga quella

    Giusto a titolo di interesse:

    Dim p           As DAO.Property
    Dim ctl			As Accecc.Control
    
    For each ctl in me.Controls
    	Select Case ctl.ControlType
            Case Is = acTextBox, acComboBox, ListBox
    			For Each p In ctl.Properties
    				Debug.Print "PName: " & p.Name, "P.Value: " & p.Value
        		Next
        End Select
    Next

    Mel tuo catso tuttavia se basta come mi pare di aver capito il ControlSource non ne vale la pena e puoi usare queste sintassi:

    Debug.Print ctl.ControlSource
    o
    Debug.Print ctl.Properties("ControlSource").Value

    Faccio una ulteriore osservazione, qualche versione fa la funzione TypeName non era disponibile, e si usava questa forma che però io continuerei ad usare al posto del TypeName, o ancora meglio come mostrato sopra la property "ControlType" dell'oggetto:

    If TypeOf ctl Is TextBox Then
Devi accedere o registrarti per scrivere nel forum
4 risposte