Saltar al contenido

Teclado virtual


Antoni

Recommended Posts

publicado

Hola:

Este aporte, básicamente, es solo para viciosos de Excel, ya que no tiene demasiada utilidad salvo la de analizar el código y ver como se pueden crear controles y tratarlos todos con el mismo evento.

Se trata de informar un textbox a través de un teclado virtual creado con labels.

Es capaz de evaluar expresiones aritméticas utilizando el signo igual del teclado numérico. (Ultima tecla inferior derecha)

Podeis adaptar el tamaño con la propiedad Zoom del formulario.

Saludos.

Teclado alfa.zipFetching info...

publicado

Como me considero un vicioso de Excel "por no" hacer otra cosa, entro al capote que me brinda Macro Antonio y, después de analizar sus macros, he osado trastocarlas en el teclado beta adjunto.

Ahora el teclado virtual ya no está creado con Labels sino con CommandButtons porque el interface gráfico de las teclas se parece más a botones para el común de los usuarios.

Además he añadido algunas características más:

  • El zoom del teclado se controla desde el propio teclado
  • La tecla C del teclado numérico para borrar los cálculos.
  • En la tecla 1 el símbolo | pulsando Alt Gr
  • En la tecla 4 el símbolo ~ pulsando Alt Gr
  • Cambiar ( que está 2 veces por )
  • Multilínea y barra de scroll vertical en el texto
  • Cambio del tamaño y de las Fuentes del texto (es muy aburrido ver solo letras y números Ariales)
  • Botón para venir a este foro

A mí no me escribe las vocales con diéresis: äëïöüÄËÏÖÜ

Hecho en falta algunas teclas más: Insert, Inicio, Fin, Tab, Ctrl, Alt, Win, F1-F12, Esc y Retorno de carro.

Me gustaría que se repitiera una tecla al mantenerla pulsada.

Por el momento no se me escurre nada más, ¡cuánto lo siento!

Un saludo de este forofo vicioso a tod@s que son como yo.

Teclado beta.zipFetching info...

publicado

Hola:

Con esto conseguirás que la lista de fuentes sea la de cada usuario:

Sheets("Fuentes").Unprotect
Sheets("Fuentes").Cells.ClearContents
Set FontList = Application.CommandBars("Formatting").FindControl(ID:=1728)
Fuentes.Max = FontList.ListCount
For X = 0 To FontList.ListCount - 1
Sheets("Fuentes").Cells(X + 2, 1) = FontList.List(X + 1)
Next X
Sheets("Fuentes").Cells(1, 1) = "Fuentes"
Sheets("Fuentes").Protect
[/CODE]

Y con esto, que el formulario se adapte al zoom.

[CODE]Private Sub cambiaZoom_Change()
'Zoom del teclado
Me.Zoom = cambiaZoom.Value
valZoom.Caption = "Zoom: " & cambiaZoom.Value
Me.Width = 534 * (Me.Zoom / 100) '<=======
Me.Height = 280 * (Me.Zoom / 100) '<=========

End Sub
[/CODE]

Ahora me miro lo de la tecla "ametralladora" , pero,........no se, no se......

Saludos

publicado

Wao! como siempre, tenemos que arrodillarnos ante estos dioses (Macro Antonio y pegones1), y comienzo a pensar/creer que estos dos estan aliados (espero que no me hagan represalias jeje), para atacarnos jaja

Saludos amigos y sigan asi

publicado

Hola,

Antoni, me ha gustado mucho, es muy útil el archivo para los que aun sabemos poco por no decir casi nada sobre crear controles o tratarlos con el mismo evento.

Le he añadido la ametralladora que pedíais, va en el adjunto el archivo Beta2 cogido a partir del Beta1, no porque me guste mas el Beta1, (los dos son geniales), sino por seguir la línea de mejoras.

Cada línea modificada tiene un comentario "vzs_m" en donde NO he borrado el código original, y cada línea añadida "vzs_a" para que os sea fácil ver los cambios en el documento. La "ametralladora" solo es aplicada a las teclas que devuelven un disparador, pero se puede aplicar a todas, en los comentarios se ve más claro.

=========================

Pedro, no me olvido de lo tuyo, hoy mismo te hago un bonico comentario en el blog.

Buen trabajo a los 2.

Saludos a los 3.

Teclado beta2.zipFetching info...

publicado

Hola Sr. Betis:

¡Cuanto tiempo!...

"Sinplemente, in presionante"

..............Y que estalle la tormenta cuanto antes y que el Rayo caiga lo mas rápido posible......

Gracias

PD ¿ Como va la resaca de la feria ?

  • 2 weeks later...
publicado

La gran contribución de verzulsan con teclas ametralladoras me ha inspirado para hacer una nueva variante del teclado virtual con dos pantallas colocadas arriba, para que las manos puestas en un teclado táctil no las oculten.

Macro Antonio, he añadido más teclas, como la de Windows y dos que echo en falta en todos los teclados, como tecla única: Ctrl + C y Ctrl + V

Una pantalla es de texto multilínea y la otra numérica, aunque en las dos se pueden evaluar los cálculos.

verzulsan, ya se puede repetir la ametralladora con las teclas Supr y Back.

Teclado beta3.zipFetching info...

publicado

Macro, habrás visto que he intentado limpiar el código y creo que lo he conseguido en la función CapturarTecla con un Select Case tecla que llama a la mini rutina Repetir.

Y es que los GoTo RetornoFuncion que añadió verzulsan me resultan insufribles, jejeje!!!

He modificado AñadirTexto precisamente al revés, para quitar tanto Select.

    If Agudo Or Grave Or Dieresis Or Circunflejo Then
Select Case LCase(valor)
Case "a": offsetCar = 127: incCar = 1
Case "e", "i": offsetCar = 131: incCar = 0
Case "o": offsetCar = 131: incCar = 1
Case "u": offsetCar = 132: incCar = 0
Case Else: offsetCar = 0
End Select

If offsetCar > 0 Then
If Grave Then incCar = 0
If Agudo Then incCar = 1
If Circunflejo Then incCar = 2
If Dieresis Then incCar = incCar + 3
valor = Chr(Asc(valor) + offsetCar + incCar)
End If
End If[/CODE]

Me he guiado por el lugar que ocupan las vocales acentuadas en las tablas de códigos.

publicado

Gracias Pedro:

A veces "repito" código para una mejor comprensión de la función o del procedimiento. (Incluso para mi, ya que pasado algún tiempo, me cuesta entender mis propios códigos,......jajaja)

Saludos

  • 3 years later...
  • 2 months later...
publicado

buen día rafajm

la diferencia entre 32 bits y 64 bits radica en la declaración de las librerías.

en el modulo de clase del archivo (ClsCB) en el editor de VBA (Alt+F11) vas a encontrar estas lineas

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer  'Escucha de teclas
Private Declare Function GetTickCount Lib "kernel32" () As Long 'Tiempo en milisegundos
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)[/CODE]

Solo las debes cambiar para que queden así:

[CODE]Private Declare PtrSafe Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer 'Escucha de teclas
Private Declare PtrSafe Function GetTickCount Lib "kernel32" () As Long 'Tiempo en milisegundos
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)[/CODE]

Agregando la palabra PtrSafe y con eso ya te funciona perfectamente.

Saludos

Teclado beta3_64_bits.xlsFetching info...

  • 3 months later...
publicado
  "Macro Antonio dijo:
Hola Sr. Betis:

¡Cuanto tiempo!...

"Sinplemente, in presionante"

..............Y que estalle la tormenta cuanto antes y que el Rayo caiga lo mas rápido posible......

Gracias

PD ¿ Como va la resaca de la feria ?

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 109 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      189
    • Comentarios
      99
    • Revisiones
      29

  • Crear macros Excel

  • Mensajes

    • Hola Buenas Noches, Me podrán ayudar a resolver un problema con una planilla que tengo, les comento brevemente. Tengo un archivo que cuenta con 2 hojas, la primera se llama "Movimientos" que básicamente muestra los productos con quiebres que se presentan y la hoja "Producción" que como su nombre lo dice son las producciones de cada producto según fecha de creación. Lo que necesito es lo siguiente: Cada vez que agregue una producción en la hoja "producción", debo ingresar el código creado su cantidad y lote respetivamente, además de la fecha en que se realiza la producción, en caso que sea mayor a las 12:00 se considera PM sino AM. Lo complejo es acá en la otra hoja llamada Movimientos: Esta hoja contiene una columna que se llama "Saldo", que básicamente es la diferencia de lo producido vs el quiebre en esa fecha. Una columna llamada "Cumple", que significa que ese pedido lleva si o no el producto con quiebre. Y una columna "Se preparo", que es si el pedido se preparo o no. Lo complicado viene acá es que si la fecha de la producción que ingrese en la hoja "Produccion", se hace después de la fecha de la hoja movimientos no me debe contar esa producción para efecto de la columna Saldos, si la fecha es igual o menor si se considera y ese saldo que queda disponible se puede ocupar para futuros ingresos de pedidos. Otra conducción es que las producciones siempre se deben asignar al pedido más antiguo de ese código salvo que la fecha de entrega ya haya pasado. La columna "Cumple" es básicamente para poder generar un KPI donde me indique cuales producciones se cumplieron con el plazo y cuales No. Espero me puedan ayudar ya que tengo la siguiente formula pero no sirve ya que me toma las unidades totales y no cumple con la restricción del horario. =SUMAR.SI(Produccion!A:A; $A2; Produccion!C:C) - SUMAR.SI.CONJUNTO($E$2:$E2; $A$2:$A2; A2)) Muchas gracias. Ejemplo..xlsx
    • Hola a ambos, Prueba con: =BYROW(G5:G6;LAMBDA(x;UNIRCADENAS(" - ";1;FILTRAR(E5:E10;B5:B10=x)))) Saludos,
    • Si tienes office 365 puedes usar algo como FILTER ó TEXTJOIN y si no tienes, entonces se puede jugar con las formulas, pero no te recomiendo mucho si son muchos datos, de todas maneras te dejo una fórmula y en vba, ya tu decides cual ocupar, vale Saludos BUSCAR.xlsm
    • Buenos días mis estimados Familia ayudaexcel,  Favor quisiera solicitar su gentil soporte con lo siguiente: Necesito una formula que al buscar encuentre el valor inicial de busqueda y dea todo los resultados encontrado en una celda como ejemplo. si este producto tienes 4 cantidades esta al hacer una formula de busqueda me dea el resultado de las 4 en una celda, dejo el adjunto a espera de su gran soporte.   BUSCAR.xlsx
    • Saludos Sr @Israel Cassales espero este bien quise verificar bien su solución y que las modificaciones que hice funcionarán adecuadamente y al respecto debo decir que su aporte es excelente ya que no solo me ayudo a resolver lo que necesitada sino que también me ayudo a solventar dos cosas más por lo cual estoy muy agradecido 
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.