Controlar estado de mayuscula en teclado con VBA

22/11/2005 - 17:19 por Marcelo - Hi | Informe spam
Muy buenas para todos.
Desde a les agradezco por compartir vuestro conocimiento.
Les comento mi situación.
Un formulario de entrada de datos en una hoja de excell, utilizando como
cajas de texto, las propias celdas.
Y controlando el ingreso posterior en el lugar de almacenamiento, desde VBA.
La pregunta: Si al introducir una cadena de texto, y la misma esta en
minuscula, Puedo enviar una orden para cambiar el teclado a mayuscula con
VBA??

Un saludo a todos.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
22/11/2005 - 21:31 | Informe spam
hola, Marcelo !

Un formulario de entrada de datos en una hoja de excell, utilizando como cajas de texto, las propias celdas.
Y controlando el ingreso posterior en el lugar de almacenamiento, desde VBA.
Si al introducir una cadena de texto, y la misma esta en minuscula
Puedo enviar una orden para cambiar el teclado a mayuscula con VBA?



no es necesario andar cambiando el estado de las teclas [may / bloq-may] para 'convertir' caracteres por vba ;)
si suponemos que en la hoja de formulario vas a 'tomar' un texto en la celda 'B5'...
para 'transportarlo' [en mayusculas] a la hoja 'de destino' en la celda 'M40'... prueba con algo +/- como lo siguiente:
Worksheets("Hoja de destino").Range("m40") = UCase(Worksheets("Hoja de formulario").Range("b5"))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Marcelo - Hi
24/11/2005 - 13:10 | Informe spam
Muchas gracias Hector.
De todas maneras, conocía de esa soloción.
Solo que tenia la curiosidad de si tal vez existia
una forma de controlar el "estado" de esas teclas
y modificarlo.

Un saludo
Respuesta Responder a este mensaje
#3 Héctor Miguel
24/11/2005 - 22:17 | Informe spam
hola, Marcelo !

De todas maneras, conocía de esa solocion.
Solo que tenia la curiosidad de si tal vez existia una forma de controlar el "estado" de esas teclas y modificarlo.



si hay 'formas' para modificar el estado de la tecla CapsLock [y cualquiera otra] :))
solo que... [como todo]... tienen sus 'pros' y 'contras' :-((
el siguiente ejemplo, 'obliga' a que la tecla CapsLock quede 'activada' PERO...
-> NO modifica el 'indicador luminoso' en el teclado... que podria quedar 'invertido' :-(
lo cual [seguramente] podria confundir al usuario [si ve que escribe mayusculas con el indicador 'apagado' y viceversa] :))
en un modulo de codigo 'normal' ==Private Const CapsLock As Long = &H14
Private Type KeyboardBytes
kbByte(0 To 255) As Byte
End Type
Dim kbArray As KeyboardBytes
Private Declare Function SetKeyboardState _
Lib "User32" (kbArray As KeyboardBytes) As Long
Sub Bloquear_Mayusculas()
kbArray.kbByte(CapsLock) = 0 ' 0 = Desbloqueado / 1 = Bloqueado '
SetKeyboardState kbArray
End Sub

haz pruebas... y... OJO con lo comentado ;)
saludos,
hector.
Respuesta Responder a este mensaje
#4 Héctor Miguel
26/11/2005 - 06:55 | Informe spam
hola, William !

... no cambia el estado del led porque es para Windows 9x, y se puede acortar un poco:


Declare Sub SetKeyboardState Lib "user32" (ByVal lpKeyState As String)
Public Teclado As String * 256
Sub MayúsculasOn()
Mid(Teclado, 21, 1) = Chr(1)
SetKeyboardState Teclado
End Sub
La funcion para sistemas NT es esta:


Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Sub LedMayúscOnOff()
keybd_event &H14, &H45, 1, 0
keybd_event &H14, &H45, 3, 0
End Sub

Cuando tengo tiempo estoy trabajando en el TextoDeNumero
cuando este mas adeleantada la pongo aqui para que la destripes



1) millon de gracias por el 'tip' [y la 'correccion'] del led del capslock
['meterme' con las 'cositas' de windows por codigo... no es 'mi fuerte'... aunque no esta por demas el conocerlo] :))

2) quedo a la espera de los numeros a texto... [como dices: 'para destriparla'... -si se deja- :D]

saludos,
hector.

p.d. a mi 'bandeja de trucos'... solo 'le duele' que tus mensajes vengan con formato html :-(
['pesan' mas de 'lo necesario'] ;)
cuando tengas un 'chance'... visita: http://spaces.msn.com/members/excel4all
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida