Puedes poner en el evento change de cada textbox así:
Ejemplo para 3 textbox, tendrías que hacerlo para tus 26.
Private Sub TextBox1_Change()
TextBox1 = Application.Proper(TextBox1)
End Sub
Private Sub TextBox2_Change()
TextBox2 = Application.Proper(TextBox2)
End Sub
Private Sub TextBox3_Change()
TextBox3 = Application.Proper(TextBox3)
End Sub
O puedes crear una clase así:
1. Inserta un módulo de clase,
2. En el name de la clase pon el nombre "Clase1"
3. Pega el siguiente código
Option Explicit
Public WithEvents tbxCustom1 As MSForms.TextBox 'Custom Textbox
'Referencia
'http://www.ozgrid.com/forum/showthread.php?t=80631
Private Sub tbxCustom1_Change()
tbxCustom1 = Application.Proper(tbxCustom1)
End Sub
Private Sub Class_Terminate()
'Destroy The Class Object And Free Up Memory
Set tbxCustom1 = Nothing
End Sub
4. En tu formulario pon el siguiente código
Dim colTbxs As Collection 'Collection Of Custom Textboxes
Private Sub UserForm_Initialize()
Dim ctlLoop As MSForms.Control
Dim clsObject As Clase1
'Create New Collection To Store Custom Textboxes
Set colTbxs = New Collection
'Loop Through Controls On Userform
For Each ctlLoop In Me.Controls
'Check If Control Is A Textbox
If TypeOf ctlLoop Is MSForms.TextBox Then
'Create A New Instance Of The Event Handler CLass
Set clsObject = New Clase1
'Set The New Instance To Handle The Events Of Our Textbox
Set clsObject.tbxCustom1 = ctlLoop
'Add The Event Handler To Our Collection
colTbxs.Add clsObject
End If
Next ctlLoop
End Sub
Private Sub UserForm_Terminate()
'Destroy The Collection To Free Memory
Set colTbxs = Nothing
End Sub
Nota: La declaración debe ir hasta el principio de todo el código del user form
Dim colTbxs As Collection 'Collection Of Custom Textboxes
Te anexo mi archivo con los 2 ejemplos.
https://www.dropbox.com/s/m9tuc7x1yksuo7m/clase%20textbox%20nombre%20propio.xlsm
Saludos. Dante Amor
No olvides valorar la respuesta.