Necesito SOS

25/11/2005 - 23:03 por Edison Torres | Informe spam
disculpame puedes decirme en onde esta el error ya que al codigo
que tu me envias le cambie para algo para que me capture por medio del
KeyPress tal como tu me indicastes pero no se que esty haciendo mal
porque no me funciona

Private Sub TextBox25_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If LCase(Chr(KeyAscii)) Like "[a-zñ]" Then KeyAscii Asc(UCase(Chr(KeyAscii))): Worksheets("Reportes").Range("f44") Worksheets("Reportes").Range("f44") & Chr(KeyAscii):
Else: KeyAscii = 0
End If
Worksheets("reportes").Range("F44").Value = TextBox25.Value
End Sub

Si te daras cuenta estoy capturando la pulsacion pero ahi esta el error
(no se donde) te recuerdo que es para que solo me acepte texto y
espacios en blanco y que no me acepte numeros ni negativos ni
positivos.

Saludos

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
26/11/2005 - 00:35 | Informe spam
hola, Edison /Ruben !

hola, Ruben/Edison !

... puedes decirme en onde esta el error ya que al codigo que tu me envias le cambie para algo
para que me capture por medio del KeyPress tal como tu me indicastes pero no se que esty haciendo mal [...]



por favor... 'plis'... [y lo mismo en cualquier idioma que te resulte mas 'entendible'] :DD
-> revisa 'de pe a pa'... 'de principio a fin'... todo el contenido del siguiente mensaje ;)
==[primero]: no hay molestia ni disculpas que ofrecer ni pedir por consultar en el foro ;)
a menos [obviamente] que existan agresiones :-( [para lo cual... 'basta' con abandonar 'el hilo'] :))

[segundo]: la situacion que comentas, ya la habiamos 'tratado' [en el ultimo post a tu consulta: 'problemas con un textbox']

[en resumen]: probablemente exista una 'confusion' en cuanto a como tratar/aprovechar/utilizar/... los eventos...
[me explico]: los 'eventos' [como el '_keypress'] son una especie de 'enlace' entre 'el evento'... y el control... [y amplio]:
- un evento involucra tiempo y momento
- un procedimiento 'de evento' -precisamente- 'atrapa' al evento en una fraccion de tiempo JUSTO ANTES de que 'suceda'...
- [en el caso del keypress] permite [o impide] que el control 'reciba' la pulsacion del usuario en el teclado 'en el momento'
- al control [el textbox], NO se le 'deposita' la pulsacion del teclado... sino -> hasta que termina el evento '_keypress'
- es por eso que puedes 'impedir' la entrada al textbox de caracteres 'no permitidos'

si queda clara mi exposicion anterior :D [probablemente] ya podras entender el 'por que' de los caracteres 'faltantes' :))

[la re/propuesta]: en el modulo de codigo del formulario, y en los eventos 'apropiados'...

1) para que un textbox solo 'pueda recibir' caracteres numericos [0 a 9]...
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then KeyAscii = 0
End Sub

2) para que 'la celda' pueda 'recibir' el contenido COMPLETO de lo que haya en el textbox...
=> NO utilices el evento '_keypress' [ya sabes que el textbox NO ha quedado 'completo'] utiliza...
Private Sub TextBox1_Change()
Worksheets("Reportes").Range("g6") = TextBox1
End Sub

3) si realmente necesitas que pase el contenido del textbox a la celda en el evento '_keypress'...
=> 'tendrias que'... 'acumular'... las pulsaciones 'validas' a lo que YA contenga 'el rango' [p.e.]
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not Chr(KeyAscii) Like "[0-9]" Then KeyAscii = 0
Worksheets("Reportes").Range("g6") = Worksheets("Reportes").Range("g6") & Chr(KeyAscii)
End Sub

-> y no estoy seguro que 'este tipo de acumulacion' sea lo que estas 'buscando' :-(

ahora si... disculpa lo extenso :)) y...
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Edison Torres
26/11/2005 - 16:46 | Informe spam
Muchas gracias me funciono perfectamente:

Ahora no se si me puedes ayudar con otra cosa, necesito en un Commandbottom
que al presionarlo solo me aparezca la pantalla de imprimir y me permitar
escoger de entre muchas impresoras una sola, puedes ayudarme con eso, gracias.

Saludos

"" escribió:

O si prefieres este otro:

Private Sub TextBox25_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Chr(KeyAscii) Like "[" & Chr(32) & "A-Za-zÁÉÍÑÓÚáéíñóú]" Then
KeyAscii = Asc(UCase(Chr(KeyAscii)))
Else
KeyAscii = &H0
End If
End Sub
Private Sub TextBox25_Change()
Worksheets("Reportes").Range("f44") = TextBox25.Value
End Sub


Respuesta Responder a este mensaje
#3 Edison Torres
27/11/2005 - 16:56 | Informe spam
Gracias

Una cosita mas si deseo de un libro que tiene varias hojas (hoja1, hoja2,
hoja3 etc.) deseo que me permita guardar (save as) unicamente la hoja2 como
lo hago y donde seria de hacerlo.

Saludos

"" escribió:

Hola Edison Torres, me alegra que hayas resuelto tu problema.
Para mostrar la pantalla Imprimir, coloca esta instrucción en el evento Click del botón:

Application.Dialogs(xlDialogPrint).Show

Espero que sea lo que buscas, Chao.

"Edison Torres" escribió en el mensaje news:
Muchas gracias me funciono perfectamente:

Ahora no se si me puedes ayudar con otra cosa, necesito en un Commandbottom
que al presionarlo solo me aparezca la pantalla de imprimir y me permitar
escoger de entre muchas impresoras una sola, puedes ayudarme con eso, gracias.

Saludos

"" escribió:

> O si prefieres este otro:
>
> Private Sub TextBox25_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
> If Chr(KeyAscii) Like "[" & Chr(32) & "A-Za-zÁÉÍÑÓÚáéíñóú]" Then
> KeyAscii = Asc(UCase(Chr(KeyAscii)))
> Else
> KeyAscii = &H0
> End If
> End Sub
> Private Sub TextBox25_Change()
> Worksheets("Reportes").Range("f44") = TextBox25.Value
> End Sub
>
>
Respuesta Responder a este mensaje
#4 Ruben
30/11/2005 - 01:01 | Informe spam
:

esa es manualmente pero a nivel de codigo en VBA excel como podria
hacer esto:

Una cosita mas si deseo de un libro que tiene varias hojas (hoja1,
hoja2,
hoja3 etc.) deseo que me permita guardar (save as) unicamente la hoja2
como
lo hago y donde seria de hacerlo, es decir, seria que me haga una
pregunta si lo deseo o no si es si me guarde solo la hoja2 si es no que
salga de la aplicacion.



Saludos
Respuesta Responder a este mensaje
#5 KL
30/11/2005 - 01:15 | Informe spam
Hola Ruben,

Una pregunta: ?No te ha valido mi respuesta a tu consulta casi identica
hecha el dia 28/11? Por si las... te la pongo mas abajo.

Saludos,
KL


Hola Edison,

Prueba el codigo que te pongo a continuacion colocandolo en un modulo
estandar.

Saludos,
KL

Sub Test()
' Declaramos las variables
Dim ws As Worksheet, wb As Workbook
Dim Archivo, Respuesta As VbMsgBoxResult

' Comprobamos que la hoja Reportes
' existe en el libro activo.
On Error Resume Next
Set ws = ActiveWorkbook.Worksheets("Reportes")
On Error GoTo 0
If Not ws Is Nothing Then
' Si la hoja Reportes existe
' Mostramos tres opciones: Guardar
' Descartar o Cancelar la operacion.
Respuesta = MsgBox( _
"?Desea guardar los cambios?", _
vbYesNoCancel + vbExclamation, _
"Cerrar el libro")
Select Case Respuesta
' Si la respuesta es Guardar...
Case vbYes
' Mostramos el dialogo de Guardar como...
Archivo = Application.GetSaveAsFilename( _
fileFilter:="Archivos Microsoft Excel (*.xls), *.xls")
' Si el usuario ha proporcionado la ruta
' y ha pulsado el boton guardar...
If Archivo <> False Then
' Copiamos la hoja Reportes a un libro nuevo...
ws.Copy
' Guardamos el nuevo libro usando la ruta y
' nombre de archivo proporcionados por el usuario.
ActiveWorkbook.SaveAs Archivo
Else
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End If
Case vbNo
' Si la respuesta es Descartar, mostramos
' un mensaje de aviso. Mas abajo procederemos
' a cerrar todos los libros sin guardar cambios
' y a cerrar Excel.
MsgBox "No se han guardado los cambios."
Case vbCancel
' Si la respuesta es Cancelar, mostramos un
' mensaje de aviso y abortamos el macro.
MsgBox "Se ha cancelado la operacion."
Exit Sub
End Select
' Ojo - tal como planteas la tarea, habra
' que forzosamente cerrar todos los archivos
' abiertos guardando o descartando los cambios.
' Personalmente me parece una caracteristica
' bastante irritante en cualquier aplicacion.
For Each wb In Workbooks
' Marcar todos los libros como guardados
' para evitar el aviso de guardar cambios.
wb.Saved = True
' Si quieres guardar los cambios forzosamente
' sustituye la instruccion "wb.Saved = True"
' por "wb.Save"
Next wb
With Application
' Congelar la pantalla
.ScreenUpdating = False
' Cerrar Excel
.Quit
End With
' Si no existe la hoja Reportes, mostramos
' un mensaje de aviso y salimos del macro.
Else
MsgBox _
"No existe la hoja ""Reportes"" en el libro activo"
End If
End Sub
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida