Colocar solo números en textbox

Hola otra vez.!!

La vez pasada me diste una mano con esto.

tengo muchos textbox ( alrededor de 80 ) en un userform, la primer consulta que te hice era para poder poner solamente números en dichos textbox, después te volví a consultar para que en un textbox ( observaciones ) en particular pueda escribir, hasta acá esta resuelto.

Ahora mi consulta es o quiero hacer que, en todos los text box me permita solo poner números y también me permita escribir en ves de números una y solo una letra ( por ej. La letra N ), en el ultimo textbox me tiene que permitir escribir ya que este textbox es una casilla de observaciones.

Desde ya muchas gracias.

---------------------------------------------------------------

Hola Aprendemos.!!
Quiero consultarte nuevamente, como debo hacer para que al menos un textbox me permita escribir letras ( en un userform donde se colocan datos operativos "números" pero tiene un textbox de "Observaciones" donde se debería escribir palabras.)
Adjunto la consulta y respuesta de aquella vez.
Desde ya muchas gracias, slds.
Hola.!! Tengo un Userform con 80 textbox para la carga de datos, estos datos pueden ser solamente números, tengo resuelto esto pero para un textbox en particular:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then
'KeyAscii = 8 es el retroceso o BackSpace
If KeyAscii <> 8 And KeyAscii <> Asc(".") Then
KeyAscii = 0
End If
End If
End Sub
La consulta es como puedo aplicar este código para que aplique a todos los textbox a la vez ( se me había ocurrido con algún bucle for next, pero no encontré la forma ).
Desde ya muchas gracias.
Slds,
Tú me diste esta solución de funciono muy bien:
Option Explicit
Public WithEvents tbxCustom1 As MSForms.TextBox 'Custom Textbox
'Referencia
'http://www.ozgrid.com/forum/showthread.php?t=80631
Private Sub tbxCustom1_Change()
'Message Box To Display Which Textbox Was Changed
'MsgBox "You added A Number To: " & tbxCustom1.Name
'This is just to show you can handle múltiple events of the textbox
End Sub
Private Sub tbxCustom1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n As Integer
'Allow only Numbers To be Entered Into Textbox
n = KeyAscii
Select Case KeyAscii
Case 46 To 57 'números (./0123456789)
Case Else
KeyAscii = 0
End Select
End Sub
Private Sub Class_Terminate()
'Destroy The Class Object And Free Up Memory
Set tbxCustom1 = Nothing
End Sub
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
Experto
Que tal:
Cambia esta macro Private Sub UserForm_Initialize()
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 ctlLoop.Name <> "TextBox3" Then
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
End If
Next ctlLoop
End Sub
Cambia TextBox3, por el nombre del textbox de observaciones
Saludos.DAM
Si es lo que necesitas, por favor, podrías finalizar la pregunta. Gracias

1 respuesta

Respuesta
1

Entra a la clase1 y cambia esta parte

Private Sub tbxCustom1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim n As Integer
     'Allow only Numbers To be Entered Into Textbox
    n = KeyAscii
    Select Case KeyAscii
    Case 46 To 57 'números (./0123456789)
    Case 78, 110 'N y n
    Case Else
        KeyAscii = 0
    End Select
End Sub

Si te fijas, estoy agregando: Case 78, 110 'N y n es para que permita la N mayúscula y la n minúscula, si solamente quieres la mayúscula deja así: Case 78

Saludos. DAM

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas