Modificar en 1 paso propiedades de objetos de un contenedor.

Samuel Cano

Board Regular
Joined
Jun 24, 2002
Messages
62
Saludo amigos que me han apoyado antes ( Juan Pablo, Greg, heme acá de vuelta :) )

Bueno, me explico, en un formulario tengo un contenedor Marco con 20 controles Etiqueta y 20 Cuadros de Texto que necesito habilitar o deshabilitar dependiendo de ciertas circuntancias, además de alinear el texto y aplicar formato numérico...

ejemplo como lo hago por ahora (uno por uno)

With txtxImporte
.Value = ""
.Enabled = False
.TextAlign = fmTextAlignRight
End With

Tengo la idea de que tal vez con algo así como un ciclo For Each ...

vagamente recuerdo que vi algo semejante pero no logro ubicarlo...

a ver si alguien me puede hechar la mano

Gracias de antemano, se pueda o no...

Desde México: Samuel Cano
 

Excel Facts

Which lookup functions find a value equal or greater than the lookup value?
MATCH uses -1 to find larger value (lookup table must be sorted ZA). XLOOKUP uses 1 to find values greater and does not need to be sorted.
Puedes pasear por los controles con este Loop

Code:
Dim c As Control
For Each c In Form1.Controls    
If TypeOf c Is TextBox Then        
c.ForeColor = vbRed    
End If
Next

En el supuesto caso en que el contenedor contenga gran variedad de controles a Uniformar selectivamente, en lugar del If puedes utilizar un SELECT CASE
GALILEOGALI
 
Upvote 0
Muy agradecido galileogali...

Hasta en sábado ayudando, caray te lo aprecio mucho.

Ahora mismo integro el código a mi proyecto, gracias nuevamente y seguimos en contacto.

:-D
 
Upvote 0
Hola Samuel,

Gali ya le ha mostrado la forma principal del bucle. Otra cosa que se puede utilizar es la propiedad TAG que cada control tiene.
Code:
Private Sub CommandButton1_Click()

    Dim c As msforms.Control
    
    For Each c In ufxl_MiForma.frmMarcoUno.Controls
        With c
            If .Tag = "talytal" Then
                If TypeOf c Is msforms.TextBox Then
                    .Enabled = True
                    .Text = Format(CDbl(.Text), "#,##0.00")
                Else
                    .Text = ""
                    .Enabled = False
                End If
            End If
        End With
    Next
End Sub
Note que si va a user TYPEOF C en vez de TYPENAME(C) para determinar el tipo de control, hay que poner el MSFORMS. en frente de TEXTBOX o fallará.
 
Upvote 0
Leyendo esto otra vez, creo que debe de explicar un poco más. Se usaría la propiedad de TAG si tuviese controles de mismo tipo en el mismo grupo y no hay otra manera de distinguirlos. O sea si su marco tiene veinte controles TEXTBOX pero usted quiere que la rutina solamente toque a doce de los veinte y que no toque a los otros ocho TEXTBOX, se puede poner un text en los TAGs de los doce TEXTBOX deseados para darlos un "custom property".

Hay manera de usar los TAGs para brindar una cantidad sin limite de "custom properties" pero implica usar un CLASS MODULE que - de lo que me doy cuenta - no está libre asi que no lo puedo publicar aquí.

Saludos,
 
Upvote 0
Saludos Greg y gracias...

El código que me hiciste favor de ampliar es de hecho más aproximado al que pretendo utilizar, voy a revisar el uso de la propiedad TAG que mencionas aunque de primera vista me parece claro...

En cuanto a utilizar módulos de clase, bueno... implementarlos y utilizarlos (me apena un poco reconocer) está más allá de mi experiencia práctica, pero igual te agradezco el dato y también lo revisaré.

Gracias de nuevo y seguimos en contacto...
 
Upvote 0

Forum statistics

Threads
1,223,969
Messages
6,175,690
Members
452,667
Latest member
vanessavalentino83

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top