Crear una Clase para los textbox que necesito con la primera letra en mayúsculas
Tengo por aquí algo que no recuerdo donde fue que lo baje o quien me lo facilitó
'Pegar TODO lo de abajo en el Modulo de Clase nombre Clase1 Option Explicit Public WithEvents tbxCustom1 As MSForms.TextBox 'Personalisar nombre a los Textbox 'Referencia Private Sub tbxCustom1_Change() tbxCustom1 = Application.Proper(tbxCustom1) 'Reemplazar 1ª letra tbxCustom1 = VBA.Replace(tbxCustom1, " Al ", " al ") tbxCustom1 = VBA.Replace(tbxCustom1, " No ", " no ") tbxCustom1 = VBA.Replace(tbxCustom1, " De ", " de ") tbxCustom1 = VBA.Replace(tbxCustom1, " La ", " la ") tbxCustom1 = VBA.Replace(tbxCustom1, " Se ", " se ") tbxCustom1 = VBA.Replace(tbxCustom1, " Si ", " si ") tbxCustom1 = VBA.Replace(tbxCustom1, " Los ", " los ") tbxCustom1 = VBA.Replace(tbxCustom1, " El ", " el ") tbxCustom1 = VBA.Replace(tbxCustom1, " Del ", " del ") End Sub Private Sub Class_Terminate() 'Destruir la clase de objeto y liberar memoria Set tbxCustom1 = Nothing End Sub Dim colTbxs As Collection 'SOLO PARA colección de cuadros de texto personalizado. 1ª letra en Mayuscula 'Pegar en codigo del formulario Private Sub UserForm_Initialize() Dim ctlLoop As MSForms.Control Dim clsObject As Clase1 'Crear nueva colección de cuadros de texto personalizado Set colTbxs = New Collection 'Bucle a través de controles en Userform For Each ctlLoop In Me.Controls 'Compruebe si el Control es un control Textbox If TypeOf ctlLoop Is MSForms.TextBox Then Select Case ctlLoop.Name 'agregar los textbox que sí entran en Tipo Título con el nombre que tienen en el Form Case "TextBox1", "TextBox3" 'Aqui colocar el nombre que tienen en el form 'Crear una nueva instancia de la clase del controlador de eventos Set clsObject = New Clase1 'Establecer la nueva instancia para controlar los eventos de nuestro cuadro de texto Set clsObject.tbxCustom1 = ctlLoop 'Agregar el controlador de eventos a nuestra colección colTbxs.Add clsObject End Select End If Next ctlLoop End Sub '''''''''''''''''''''''''''''''''''' Private Sub UserForm_Terminate() 'Destruir la clase de objeto y liberar memoria Set colTbxs = Nothing 'SOLO PARA TextBox's personalisados End Sub
Funciona de lo mejor pero, veo que se torna mas largo que hacerlo individual a cada TextBox, son 5 TextBox.
Bueno si porque te dá la opcion de agregar los textBox que quieres porque tengo un otro que es para TODOS los del formulario.
Este tambien da para Todos si le quitas el Case ,,,,,,,,,,,,,, Select case
Dime si te parece bien o se puede hacer mas corto todo el codigo
¿Qué te parece?
1 respuesta
Respuesta de Dante Amor
1