Utilizzare una variabile per richiamare un campo in VBA

Anonimo
2011-09-01T07:22:17+00:00

Buongiorno a tutti,

nella maschera m1_4_Registrazione_Controlli ho dei controlli (c1, c2, ..., c20) e delle etichette (e1, e2, ..., e20).

I controlli sono dei campi di testo in cui inserire i risultati delle misure eseguite su un campione, la cui dimensione può variare da 1 a 20.

Vorrei rendere visibili solo i controlli (e le etichette) necessari, quindi in numero uguale alla dimensione del controllo.

(Ingenuamente) ho scritto questo codice

Dim Campo As String

Dim Campione As Byte

Campione = Me.Qtà_Controllo1

For ct = 1 To Campione

    Campo = "c" & ct

    Forms!m1_4_Registrazione_Controlli!Campo.Visible = True

    Campo = "e" & ct

    Forms!m1_4_Registrazione_Controlli!Campo.Visible = True

Next ct

tuttavia mi restituisce come errore: impossibile trovare il campo 'campo'.

C'è un modo in cui è possibile definire il nome del campo tramite una variabile in questo tipo di istruzioni?

Pensavo di utilizzare questo metodo per modificare altre proprietà dei campi interessati ("valido se", "messaggio errore", ecc)

Vi ringrazio molto per ogni eventuale contributo,

Francesco

Microsoft 365 e Office | Access | 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
2011-09-01T11:59:50+00:00

si certo,

 Forms!m1_4_Registrazione_Controlli.Form.Controls(campo).Visible = true

e  anche nell'esempio precedente l'istruzione è:

   me.Controls(campo).visible= True

con le parentesi tonde invece delle quadro ( errore di battitura)

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento
Risposta accettata dall'autore della domanda
Anonimo
2011-09-01T07:53:24+00:00

Ciao Francesco,

se i l codice è nel modulo della maschera su cui devi agire:

Dim Campo As String

Dim Campione As Byte

Campione = Me.Qtà_Controllo1

For ct = 1 To Campione

Campo = "c" & ct

    me.Controls[campo].visible= True

Campo = "e" & ct

     me.Controls[campo].visible= True

Next ct

La risposta è stata utile?

1 persona ha trovato utile questa risposta.
0 commenti Nessun commento

2 risposte aggiuntive

Ordina per: Più utili
  1. Anonimo
    2011-09-01T12:44:11+00:00

    Funziona alla perfezione.

    grazie mille, sei stata utilissima.

    Francesco

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2011-09-01T10:59:21+00:00

    Il codice è su un'altra maschera, anche se in base a ciò che mi hai consigliato potrei semplicemente trasferire il codice sulla maschera su cui deve agire (ad esempio on form load).

    Tuttavia sarebbe per me molto utile (anche per altro) sapere se c'è un modo di scrivere l'istruzione richiamando un controllo in un'altra maschera.

    La risposta è stata utile?

    0 commenti Nessun commento