Newsgroup: it.comp.appl.access
Titolo: Ricerca di valori su controlli non associati

Buongiorno a tutti e buon lunedì
 
stamattina mi son svegliato con la fissa 
di capire una cosa, facendo le seguenti premesse:
Ho una form non associata con dei txtbox sparsi, non associati. 
Con dei Dlookup ho inserito dei valori a queste caselle.
 
Su una ComboBox ho una serie di valori: "Pippo", "Pluto", Topolino"...
corrispondenti ai valori assegnati alle caselle.
Su DopoAggiornamento della Combo, è possibile trovare i valori assegnati ai controlli, con un setfocus del controllo corrispondente ?
Per esempio:
For each ctl in Me.Controls
if ctl.value = Combo then ctl.setfocus
next
 
P.s.
Tra le proprietà dei controlli non vedo .Value
eppure spesso vedo scritta questa espressione. La cosa che voglio capire è questa, anche se la domanda vera rimane quella di sopra. 
...e scusate le mie confusioni... di lunedì mattina! :-)


Se la Combo ha i NOMI dei controlli ti basta fare così:
 
Me.Controls(Me!NomeCombo.Value).SetFocus
 
@Alex

No la combo ha i valori dei controlli

 No la combo ha i valori dei controlli
 
Spiega cosa vuoi ottenere, quello che hai proposto ha un senso... ma se non ne comprendo il fine, potrei darti una risposta banale, ed eviterei...
 
@Alex

In una form ho dei nomi di ospiti...fai conto una cosa tipo Hotel...
Se in un piano ci sono 40 camere, cioè 40 ospiti, difficile trovarne uno a colpo d'occhio, quindi ho una combo (origine record tabella Ospiti) attraverso la quale cercare un ospite. 
La camera, (casella di testo non associata contente il nome dell'ospite) deve risultare 'selezionata' una volta trovato il nome, quindi il setfocus.
Per questo, tra queste txtbox non associate avevo pensato un ciclo for each next contente il valore (= a combo).
Per questo chiedevo se era possibile utilizzare qualcosa tipo ctl.value...
Ma .value non appare tra le proprietà dei controls 
Mi sono spiegato?...

Ho capito...
La tua idea funziona.
 
Ci sono metodi migliori...?
Si, ma richiedono qualche conoscenza più spinta.di programmazione ad oggetti.
 
Definito che ogni stanza è un'oggetto ha o può avere N properties 
Tipo=Singola/Doppia 
Fumatori=Vero/Falso
Livello=Standard/Luxury/ecc...
TectBox=Controllo Textbox specifico 
 
Un'altra proprietà è l'utente.
 
Se pensi quindi non alla tua Textbox ma alla classe Stanza, puoi pensare di istanziare N classi per piano quante sono le stanze... assegnando alla classe anche la textbox.
 
Se realizzi una Master class che gestisce le collection e le istanze di classi puoi prevedere al suo interno una Collection alla quale passando il Nome Utente restituisce la.classe Stanza...
 
Questo è un modo decisamente più strutturato per vedere le cose... ma meno usuale e poco usato.
 
Inutile dire che Io userei questo con vantaggi rilevanti anche a livello grafico... ma...
 
@Alex

Con i termini tecnici da te usati: Master class, collection etc (non familiari nel mio gergo) non ho ben chiaro cosa volessi dire, ma credo di poterti rispondere che questo lavoro lo fa gia' la Tabella Camere. 
La 1, ha n letti, doppia co  bagno
La 2, ha un letto, singola senza bagno 
Etc... 
Io stavo curando adesso l'aspetto grafico per una piu facile assegnazione della camere, sulla base della struttura ospitante. E...usando i miei metodi... è tutto fatto. Manca solo questo dettaglio.
Se non c'è non importa. Era dunque ormai una questione di curiosità: 
Se mi è capitato di vedere in giro la proprietà ctl.value, perché non appare nell'editor durante la progrmmazione?
In ogni caso rileggerò con più attenzione ciò che ha scritto. 
Grazie come sempre!

Ps.
Avevo fatto una struttura Db che prevedeva in tabella Camere, n ospiti. (Quindi tra le proprietà della stanza, oltre fumo, non fumo, doppia o singola, c'era l'utente.) Ma non andava bene perche per ogni struttura 'alberghiera' avrei dovuto cambiare la struttura della tabella. Inoltre i tot ospiti in una stanza erano CAMPI e non record. Molto fastidioso.

Tu scrivi 'assegnando alla classe anche la textbox.'
Vuoi dire di aggiungere il Nome controllo alla tabella?
Sarebbe una buona idea perché poi non cerco il valore ma il nome del controllo !!!!...

No stiamo parlando di 2 approcci diversi...
Io sto parlando di programmare un oggetto ed usarlo... tu di Tabelle...
Siccome lavori con controlli non associati dovresti fare un progresso tecnico nel gestire i dati e l'interfaccia altrimenti 50 stanze richiedono 50 Dlookup solo per scrivere un testo in una casella e perderne i riferimenti del record...
Non ti pare che questo approccio che ti costringe a ciclare N controlli per trovare 1 nome senza nemmeno avere poi il riferimento alla PK del record sia estremamente disfunzionale...?
 
Ora comprendo che quanto ti ho esposto sia un Po fuori dagli schemi del VBA di base... ma se tu provassi a comprendere l'uso delle classi e di conseguenza delle collection ti si aprirebbero scenari tecnici interessanti.
 
Per poterti consentire una più concreta comprensione puoi leggere questo 3D simile:
 
https://groups.google.com/forum/m/#!topic/it.comp.appl.access/Np0crNZ0oJc
 
 
Detto questo, se avrai interesse a percorrere uno studio in questa direzione... potremo approfondire il tema... altrimenti siccome riconosco essere di livello non basico, ti suggerisco di procedere con il tuo approccio...
 
@Alex

Si, avevo il sospetto che stessimo parlando di universi diversi. Speravo che il problema fosse solo linguistico (di gergo) ma non era così :-)
Ho letto i post. Ovviamente non ci ho capito un mazza ma sono entusiasta di intraprendere questo percorso. (Se solo sapessi da dove iniziare). Tra i diversi libri che ho devo vederne in particolare uno, se spiega le classi e se porta esempi comprensibili. (O che di fatto funzionino copiando il codice). 

Pubblico il codice che realizza un esempio di cosa significa CREARE una CLASSE OGGETTO...
 
Sono 3 PEZZI di codice:
1° Da inserire nella Maschera
2° Da inserire in una CLASSE chiamata [mclsControl]
3° Da inserire in una CLASSE chiamata [mclsControls] questa è la MASTER
 
Nella Maschera vanno inseriti 9 CommandButton nominati [cb1]÷[cb9]
 
I CommandButton rappresentano in questo caso un POSTO in un campeggio e come tale prevede delle Caratteristiche:
TIPO DI POSTO=Auto/Bungalow/Roulotte/Tenda (Proprietà Tipo)
OCCUPATO=Vero/Falso (Proprietà IsBusy)
 
Il codice quindi programma la SINGOLA CLASSE OGGETTO definendo quale CommandButton ha associato e che tipo di POSTO rappresenta, e se questo è LIBERO o OCCUPATO.
 
' *****************************************************************
1 Nel codice della Maschera
' *****************************************************************
Il codice serve per assegnare alla CLASSE OGGETTO [mclsControl]
tutte le sue PROPERTIES, inclusa l'associazione al controllo CommandButton
' *****************************************************************
 
Option Compare Database
Option Explicit
 
' ===================================================
' Dichiarazione MASTER CLASS-COLLECTION
' ===================================================
Private WithEvents mcl As mclsControls
 
Private Sub Form_Load()
    On Error Resume Next
    Dim ctl As Access.Control
    Dim mCC As mclsControl
 
    Set mcl = New mclsControls
    Set mcl.Parent = Me
 
    ' ===================================================
    ' Ovviamente si può fare un CICLO su CONTROLS e
    ' leggere la proprietà TAG="X"
    ' ===================================================
    Set mCC = mcl.Add(Me.cb1):      mCC.Tipo = Bungalow
    Set mCC = mcl.Add(Me.cb2):      mCC.Tipo = PostoAuto
    Set mCC = mcl.Add(Me.cb3):      mCC.Tipo = Roulotte
    Set mCC = mcl.Add(Me.cb4):      mCC.Tipo = Tenda
    Set mCC = mcl.Add(Me.cb5):      mCC.Tipo = Bungalow
    Set mCC = mcl.Add(Me.cb6):      mCC.Tipo = Bungalow
    Set mCC = mcl.Add(Me.cb7):      mCC.Tipo = Tenda
    Set mCC = mcl.Add(Me.cb8):      mCC.Tipo = PostoAuto
    Set mCC = mcl.Add(Me.cb9):      mCC.Tipo = Tenda
 
End Sub
 
' ===================================================
' DISTRUZIONE OGGETTI(CLASSI)
' ===================================================
Private Sub Form_Unload(Cancel As Integer)
    Set mcl = Nothing
End Sub
 
Private Sub mcl_Click(Oggetto As mclsControl)
    MsgBox "Evento Rilanciato nella FORM dalla MASTERCLASS" & vbNewLine & "Il CommandButton Cliccato è :" & 
Oggetto.Control.Name
 & " Tipo:" & Oggetto.Tipo & "-" & Oggetto.Tipo2String(Oggetto.Tipo), vbInformation
End Sub
 
Private Sub mcl_DblClick(Oggetto As mclsControl)
    MsgBox "Evento Rilanciato nella FORM dalla MASTERCLASS" & vbNewLine & "Il CommandButton Cliccato è :" & 
Oggetto.Control.Name
 & " Tipo:" & Oggetto.Tipo & "-" & Oggetto.Tipo2String(Oggetto.Tipo) & vbNewLine & "OCCUPATO=" & Oggetto.IsBusy, vbInformation
End Sub
 
Private Sub mcl_GotFocus(Oggetto As mclsControl)
'    Debug.Print "GotFocus " & 
Oggetto.Control.Name
 
End Sub
 
Private Sub mcl_LostFocus(Oggetto As mclsControl)
'    Debug.Print "LostFocus " & 
Oggetto.Control.Name
 
End Sub
 
' *****************************************************************
2 Nel codice della CLASSE [mclsControl]:
' *****************************************************************
Questa è la CLASSE OGGETTO.. sostanzialmente è il SINGOLO POSTO
Chiaramente deve inglobare il codice per gestire gli eventi del
Controllo CommandButton che è stato associato a questa CLASSE
OGGETTO...
Definisce anche le Proprietà TIPO/ISBUSY
Contiene delle ENUM tipiche dell'Oggetto
' *****************************************************************
 
Option Compare Database
Option Explicit
 
Public Enum eType
   PostoAuto = 0
   Tenda = 1
   Bungalow = 2
   Roulotte = 3
End Enum
 
' =================================================================
' Dichiarazioni Private per il MULTICAST
' =================================================================
Private WithEvents mCmdButt     As Access.CommandButton
Private mParent                 As mclsControls
 
Private mstrKey                 As String
Private mOriginalBackColor      As Long
 
Private mBackColor              As Long
Private mType                   As eType
Private mBusy                   As Boolean
 
Public Sub SetObjectControl(ctl As Access.CommandButton, ParentClass As mclsControls)
    Set Me.Parent = ParentClass
    Set Me.Control = ctl
End Sub
 
Public Property Set Control(ctl As Access.CommandButton)
 
    If mParent Is Nothing Then
        MsgBox "Parent Class Object not defined...!", vbCritical
        Exit Property
    End If
 
    Set mCmdButt = ctl
    mstrKey = ctl.Name
    mOriginalBackColor = ctl.BackColor
 
    mCmdButt.OnMouseMove = "[Event Procedure]"
    mCmdButt.OnMouseUp = "[Event Procedure]"
    mCmdButt.OnClick = "[Event Procedure]"
    mCmdButt.OnDblClick = "[Event Procedure]"
    mCmdButt.OnGotFocus = "[Event Procedure]"
    mCmdButt.OnLostFocus = "[Event Procedure]"
 
End Property
Property Get Control() As Access.CommandButton
    Set Control = mCmdButt
End Property
 
Property Get Parent() As mclsControls
   Set Parent = mParent
End Property
Property Set Parent(obj As mclsControls)
   Set mParent = obj
End Property
 
Public Property Get Key() As String
    Key = mstrKey
End Property
 
Public Property Get Tipo() As eType
    Tipo = mType
End Property
 
Public Property Let Tipo(vType As eType)
    mType = vType
End Property
 
Property Get IsBusy() As Boolean
    IsBusy = mBusy
End Property
Property Let IsBusy(Value As Boolean)
    mBusy = Value
    If mBusy Then
        Me.Control.BackColor = vbRed
    Else
        Me.Control.BackColor = mOriginalBackColor
    End If
End Property
 
 
' =================================================================
' EVENTI PRIVATE COMMANDBUTTON
' =================================================================
Private Sub mCmdButt_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ' =================================================================
    ' AZIONI DA FARE SUL SINGOLO CONTROLLO [QUI' sotto]
    ' =================================================================
 
    ' =================================================================
    ' POI RIBALTO L'EVENTO SULLA MASTERCLASS
    ' =================================================================
    mParent.Control_MouseMove Me, Button, Shift, X, Y
End Sub
 
Private Sub mCmdButt_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
    ' =================================================================
    ' AZIONI DA FARE SUL SINGOLO CONTROLLO [QUI' sotto]
    ' =================================================================
 
    ' =================================================================
    ' POI RIBALTO L'EVENTO SULLA MASTERCLASS
    ' =================================================================
    mParent.Control_MouseUp Me, Button, Shift, X, Y
End Sub
 
Private Sub mCmdButt_Click()
    ' =================================================================
    ' AZIONI DA FARE SUL SINGOLO CONTROLLO [QUI' sotto]
    ' =================================================================
    ' =================================================================
    ' POI RIBALTO L'EVENTO SULLA MASTERCLASS
    ' =================================================================
'    mParent.Control_Click Me
End Sub
 
Private Sub mCmdButt_DblClick(Cancel As Integer)
    Me.IsBusy = Not Me.IsBusy
    mParent.Control_DblClick Me
End Sub
 
Private Sub mCmdButt_GotFocus()
    ' =================================================================
    ' AZIONI DA FARE SUL SINGOLO CONTROLLO [QUI' sotto]
    ' =================================================================
 
    ' =================================================================
    ' POI RIBALTO L'EVENTO SULLA MASTERCLASS
    ' =================================================================
    mParent.Control_GotFocus Me
End Sub
 
Private Sub mCmdButt_LostFocus()
    ' =================================================================
    ' AZIONI DA FARE SUL SINGOLO CONTROLLO [QUI' sotto]
    ' =================================================================
 
    ' =================================================================
    ' POI RIBALTO L'EVENTO SULLA MASTERCLASS
    ' =================================================================
    mParent.Control_LostFocus Me
End Sub
' =================================================================
' Questa è solo DIMOSTRATIVA si lavora con gli indici
' =================================================================
Public Function Tipo2String(Index As Integer) As String
'Public Enum eType
'   PostoAuto = 0
'   Tenda = 1
'   Bungalow = 2
'   Roulotte = 3
'End Enum
    Select Case Index
        Case 0:     Tipo2String = "PostoAuto"
        Case 1:     Tipo2String = "Tenda"
        Case 2:     Tipo2String = "Bungalow"
        Case 3:     Tipo2String = "Roulotte"
    End Select
End Function
 
Private Sub Class_Initialize()
    '
End Sub
 
Private Sub Class_Terminate()
    ' si Verifica con la Distruzione dell'istanza
    Set mParent = Nothing
End Sub
 
' *****************************************************************
1 Nel codice della CLASSE [mclsControls]
' *****************************************************************
Questa è la MASTERCLASS che gestisce le singole CLASSI OGGETTO
Ne concentra gli eventi e li rende PUBLIC per la Maschera di gestione
' *****************************************************************
 
Option Compare Database
Option Explicit
 
' ===================================================
' EVENTI PUBLIC DI CLASSE
' ===================================================
Public Event GotFocus(Oggetto As mclsControl)
Public Event LostFocus(Oggetto As mclsControl)
Public Event Click(Oggetto As mclsControl)
Public Event DblClick(Oggetto As mclsControl)
Public Event MouseUp(Control As mclsControl, Button As Integer, Shift As Integer, X As Single, Y As Single)
Public Event MouseMove(Control As mclsControl, Button As Integer, Shift As Integer, X As Single, Y As Single)
 
Private mcolControls        As Collection
Private mFP                 As Access.Form
Private actControl          As mclsControl
 
Property Set Parent(FormParent As Access.Form)
   Set mFP = FormParent
End Property
 
Public Function Add(obj As Access.Control) As Object
    On Error GoTo Proc_Err
 
    Dim curClass As mclsControl
    If Not Exists(obj.Name) Then
        Set curClass = New mclsControl
        Call curClass.SetObjectControl(obj, Me)
        mcolControls.Add curClass, obj.Name
    Else
        Set curClass = mcolControls(obj.Name)
    End If
    Set Add = curClass
 
Proc_Exit:
    Exit Function
 
Proc_Err:
 
    Resume Proc_Exit
End Function
 
Public Function Item(strKey As String) As mclsControl
    On Error GoTo Proc_Err
 
    If Exists(strKey) Then
        Set Item = mcolControls.Item(strKey)
    End If
 
Proc_Exit:
    Exit Function
 
Proc_Err:
    Item = Nothing
End Function
 
Public Property Get Count() As Long
    If mcolControls Is Nothing Then
       Count = 0
    Else
       Count = mcolControls.Count
    End If
End Property
 
Public Property Get Exists(strKey As String) As Boolean
    On Error Resume Next
    Dim strValue As String
 
    strValue = mcolControls.Item(strKey).Key
    Exists = (Err.Number = 0)
    Err.Clear
 
End Property
 
Property Get Items() As Collection
    Set Items = mcolControls
End Property
 
Public Function NewEnum() As IUnknown
    On Error GoTo Proc_Err
 
    Set NewEnum = mcolControls.[_NewEnum]
Proc_Exit:
    Exit Function
 
Proc_Err:
    Set NewEnum = Nothing
End Function
 
Public Sub Remove(strKey As String)
    On Error Resume Next
 
    If Exists(strKey) Then
        mcolControls.Remove strKey
    End If
 
End Sub
 
Public Sub Destroy()
    On Error Resume Next
    Dim obj As Object
    For Each obj In mcolControls
        mcolControls.Remove 
obj.Control.Name
 
    Next
End Sub
 
Private Sub Class_Initialize()
    Set mcolControls = New Collection
End Sub
 
Private Sub Class_Terminate()
    Call Destroy
    Set mcolControls = Nothing
    Set mFP = Nothing
End Sub
 
' ===================================================
' IMPLEMENTAZIONE EVENTI SINGOLI DI CLASSE
' E GENERANO EVENTI DI MASTER-CLASS
' ===================================================
Friend Sub Control_GotFocus(Control As mclsControl)
    RaiseEvent GotFocus(Control)
End Sub
 
Friend Sub Control_LostFocus(Control As mclsControl)
    RaiseEvent LostFocus(Control)
End Sub
 
Friend Sub Control_Click(Control As mclsControl)
    RaiseEvent Click(Control)
End Sub
 
Friend Sub Control_DblClick(Control As mclsControl)
    RaiseEvent DblClick(Control)
End Sub
Friend Sub Control_MouseMove(Control As mclsControl, Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseMove(Control, Button, Shift, X, Y)
    Set actControl = Control
End Sub
 
Friend Sub Control_MouseUp(Control As mclsControl, Button As Integer, Shift As Integer, X As Single, Y As Single)
    RaiseEvent MouseUp(Control, Button, Shift, X, Y)
End Sub
 
Chiaramente manca la parte legata alla LETTURA/SCRITTURA Da/Su Tabella... ma è decisamente una cosa che tutti sanno fare se si capisce come cilcare la Collection ITEMS restituita dalla MASTERCLASS...
 
Inutile dire che serve COPIA/INCOLLARE tutto e provarlo, ma soprattutto STUDIARLO dopo aver capito cosa sono le CLASSI.
 
Di fatto questo esempietto è veramente scolastico, ma tutt'altro che banale.
 
BUON LAVORO a chi ha voglia di studiare.
 
@Ale


se ho ben capito devi evidenziare la camera che ha l'ospite selezionato 
dalla combo
 
 
io farei cosi
 
se la combo si chiama "ricercacamere"
e hai 40 textbox non associate camera1--->camera40
 
imposterei nelle 40 textbox il tag "camere"
 
e sul evento dopo aggiornamento della combo
 
 
Dim ctr As Control
For Each ctr In Me
     If ctr.Tag = "camere" Then
         If ctr.Value = Me.ricercacamere Then
             ctr.BackColor = vbYellow
             Else
             ctr.BackColor = vbWhite
         End If
     End If
 
Next ctr
 
 
risultato.
avrei in giallo la camera con il nome del ospite dentro
 
esempio
http://i66.tinypic.com/2ppg9oj.png
 
 
ciao
BFS
 
 
 


Deve spostare il FOCUS... sicchè il suo codice andava già bene come era senza altre varianti come premesso.
 
Il problema, nell'ottica di avere una visione meno fossilizzata quando si gestisce una parte GRAFICA che possa avere INTERAZIONE con il progetto, è capire se poi quel CONTROLLO corrispondente alla CAMERA, deve poter essere avere Funzioni riconducibili, ad esempio DOPPIOCLICK ed aprire le prenotazioni della Camera, o le manutenzioni o le pulizie altro...
 
In questo caso il semplice CICLARE funziona per gli EFFETTI speciali banali... ma se si deve fare altro... NO.
 
Chiaramente si deve sempre partire dal decidere cosa si vuole fare da grandi... ovvero se EVOLVERE la parte GRAFICA ha un senso o meno...
Se ha un senso ci sono molte opzioni, quella di programmare ad OGGETTI è la meno immediata per chi di norma usa solo Access... ma è la più TECNICA ed usata da chi programma anche altri linguaggi.
 
Saluti
@Alex


boh io come domanda leggo "Su DopoAggiornamento della Combo, è possibile 
trovare i valori assegnati ai controlli, con un setfocus del controllo 
corrispondente ?"
 
e ha espresso l'esigenza di avere sottocchio la casella che contiene 
quel valore
se gli basta il focus e non un bel sfondo giallo (o entrambi) basta questo
 
Dim ctr As Control
  For Each ctr In Me
      If ctr.Tag = "camere" Then
          If ctr.Value = Me.ricercacamere Then
                ctr.setfocus
 
        End If
Next ctr
 
e visto che mi par di capire che l'autore del posto non sa neppure cosa 
sia una programmazione ad oggetti (senza offesa) una soluzione semplice 
è quella adatta a farlo contento
 
se poi uno chiede come si fa mettere in ordine tre lettere A, B e C e io 
gli scrivo come implementare un red-black tree mi pare che la risposta 
non sia adeguata all'esigenza
 
BFS
 
 
 
 

 BFS
 
Dovresti perdere 1 minuto a leggere meglio  sia le risposte che le domande, secondo me, e provare a non banalizzare sempre perchè poi spesso si sbaglia...
 
Il FORUM non è fatto solo da chi non riesce a mettere insieme 4 righe per leggere un XML o fare una codifica B64 per gli allegati e gli basta fare un COPIA/INCOLLA... ci sono anche quelli che sanno quello che scrivono o quelli che vogliono capire...!
 
Saluti.
 
@Alex


io leggo la domanda
e la domanda è
 
"Su DopoAggiornamento della Combo, è possibile trovare i valori 
assegnati ai controlli, con un setfocus del controllo corrispondente ?"
 
e rispondo con una soluzione di 5 righe
se poi chi ha fatto la domanda trova la soluzione banale si leggerà il 
pippozzo di classi e oggetti che hai scritto tu.
 
a domanda rispondo, non ho bisogno come altri di dare sfoggio di 
straffotenza e saccenza ad ogni risposta incasinando le cose più banali
 
 
 
 
 
 
 

Infatti di solito ti basta banalizzare salvo poi capire che banalizzando si sparano cavolate.
 
Il forum serve per tutti ed anche per fare scuola... Non solo per copiaincollare codice e non solo per la F.E.
 
Se tu poi hai visione diversa giuro che mi faro una ragione.
 
@Alex

Io mi limito a ringraziarvi entrambi.
Il forum è  fatto di gente che a volte ha fretta di trovare una soluzione copia-incolla, a volte ha un po' piu tempo per fermarsi e imparare qualcosa: cioè progredire, andare oltre i propri schemi e limiti. 
Per questo ringrazio entrambi. 
Ad Alex faccio una domanda:
Sul serio copio e incollo e quel codice fa qualcosa? 
Per esempio quando scrivi 'Azioni da fare sul singolo controllo (qui sotto)' vi sono azioni immaginate, da scrivere ?
(Anche se la domanda ti sembra banale mettiti nei panni di chi non mai visto aqua in vita sua e si trova improvvisamente in mezzo al mare).
A Bfs o Bsf non ricordo :-) 
Dico: mi pare di aver provato a scrivere un codice simile (quello senza tag) ma come spiegato quando scrivo ctl.value mi dà un errore. In quanto effettivamente il compilatore automatico dell'editor vba  non presenta la proprieta .value ma semmai .name.
cmq... per sicurezza lo riprovo e tu faccio sapere.
Grazie ancora ad emtrambi.


vedo che ti rode che ho aiutato  qualcuno con la f.e. visto che la tiri 
in ballo più volte, argomento che forse non ha dato modo di sfoderare i 
tuoi pipponi kilometrici
 
ad ogni modo la vediamo in modo diverso. se l'autore del post cerca una 
soluzione rapida al suo probelma leggera la mia soluzione, se invece 
vorrà fare un corso di programmazione ad oggetti per mettere un focus in 
una casella di testo leggerà la tua
 
io me ne sono gia fatta una ragione al secondo reply


se la tua mail è valida ti mando mdb cosi vedi come funziona
 
ciao
BFS


La mia mail è valida.
Ho trascritto il tuo codice 
e, costretto a modificarlo, non funziona.
 
For Each ctr In Me
 If ctr.Tag = "Camere" Then
    If ctr.Value = Me.cerca.Column(1) Then
      ctr.SetFocus
' qui ho aggiunto un secondo end if
     End If
  End If
 Next ctr
La Combo prende i dati da IdRubrica ma visualizza la seconda colonna (1)
Nelle txtbox ho impostato la parola "Camere" nella proprietà TAG
Nelle txtbox c'è lo stesso testo di Combo poiché è preso dalla stessa tabella.
Facendo il debug quando trova il tag Camere
esegue il secondo IF ma salta il setfocus.
Non capisco perchè


ti ho mandato mdb di esempio in mail
ciao!

 io me ne sono gia fatta una ragione al secondo reply
 
Figurati... 
 
@Alex

Quel codice non va perché è scritto in maniera frettolosa e banale basta un controllo che non supporta la proprietà tag, linea o rettangolo, ed evidentemente si blocca...
Questo essere superficiali nel fare e dire le cose.
 
Ci sono sempre diversi modi per fare le cose uno di questi è proprio quello di farlo in modo  superfuciale banalizzabdo tutto.
 
@Alex


perche la linea e il rettangolo non hanno la propietà tag?
 
ma fammi un piacere...
 
 
BFS


scusa l'intromissione, potresti mandarlo anche a me?
togli nospam dalla mail
mi serve qualcosa di simile per una sorta di tombola, per evidenziare il 
numero estratto nella cartella che è appunto fatta da tante text box con 
numeri random dentro
 
grazie
Ale
 
 


mi dice mail non valida
 
ciao


prova qua
 
alexdb2116  chiocciola bigG
 
grazie

La mia è arrivata grazie. Piu tardi la provo. Anche se credo che il problema sia in quel column...

Hai ragione mi sono sbagliato sulla priorità TAG... 
 
Ciò non toglie il senso tecnico del discorso fatto che però chiudo perché non devo convincere nessuno a sperimentare, e chi legge con cognizione capisce...
 
La mediocrità fa effetto... ed è di moda... 
 
@Alex


Mail arrivata.
Funziona!
Grazie infinite.
 
Ale

 
 
 
se la combo ha due colonne va benissimo column(1) come hai scritto
vedi mdb che ti ho mandato con combo a due colonne
 
ciao
BFS


Ok, ora funziona.
Avevo messo i Tag Camere con le virgolette "Camere"
Queste è l'unica modifica apportata 
((anche se ricordo di aver provato sia con, che senza virgolette...))
Grazie :-)


grazie a te del feedback
 
BFS


bene
ciao!