Ayuda con SetFocus

14/09/2006 - 23:59 por vm_tapia | Informe spam
Tengo un formulario con 3 Frames, organizados de la siguiente manera:

En el formulario tengo el Frame2 dentro del Frame1 y el Frame3 esta separado
El orden de tabulacion es por default

en el Frame2 tengo varios TextBox y lo que necesito es que al momento de
capturar un - (guion) en cualquier TextBox del Frame2, el enfoque se
establezca
en el primer TextBox del Frame3.

yo tengo el siguiente codigo
=Private Sub C3_AfterUpdate()
If AltaFacturas.C3.Value = "*" Then
AltaFacturas.PU3.Locked = True
ElseIf AltaFacturas.C3.Value = "-" Then
AltaFacturas.C3.Value = ClearContents
AltaFacturas.ObsFact.SetFocus <<<<< aqui es donde da el error
Else
AltaFacturas.PU3.Locked = False
Cantidad3 = CDbl(AltaFacturas.C3.Value)
Cantidad3 = Round(Cantidad3, 2)
AltaFacturas.C3.Value = ClearContents
ThisWorkbook.Worksheets("Factura").Range("a16").Value = Cantidad3
AltaFacturas.C3.Value = Cantidad3
AltaFacturas.I3.Value =
Format(ThisWorkbook.Worksheets("Factura").Range("ac16").Value, "#,##0.00")
Totales
End If
End Sub
=
y al ejecutar el formulario y capturar el guion el el TextBox3 (C3)
me da el siguiente error:

"se ha produciodel el error '-2147467259(80004005)' en tiempo de ejecucion"
"error no especificado"

¿que estoy haciendo mal?

Gracias por su ayuda.

Preguntas similare

Leer las respuestas

#11 vm_tapia
20/09/2006 - 23:52 | Informe spam
Ivan:

No soy muy bueno en esto de la "enseñanza", pero a mi modo de ver y con todo
respeto hacia tu inteligencia y nivel de conocimientos de macros en Excel,
porque no haces lo siguiente.

1.- en una hoja de calculo vacia
2.- inicia la grabacion de una macro
3.- captura numeros (los que quieras) de la celda A1 hasta la A10
4.- da click en la celda D12
5.- captura numeros (los que quieras) de la celda D12 hasta la D16
6.- selecciona las celdas A4 hasta la A8
7.- oprime la tecla de suprimir
8.- selecciona la celda D13
9.- oprime la tecla de suprimir
10.- selecciona la celda D15
11.- oprime la tecla de suprimir
12.- deten la grabacion de la macro
13.- inicia el editor de Visual
14.- abre el modulo1

ahi encontraras el codigo de todas las acciones realizadas y te daras cuenta
de que cuando oprimes la tecla "suprimir" en el codigo se establece el
argumento ClearContents en la celda en la que estas posicionado o en el rango
seleccionado.

Espero que lo anterior sea de tu ayuda y comprension.

Saludos
Victor Manuel.


"Ivan" wrote:

Hola Victor Manuel

Lo primero disculpa mi torpeza, pero por lo que se ve estaba
equivocado.

En cualquier caso, y ahora por intentar aprender un poco, ¿me podrias
aclarar como usas ClearContents si no es una variable o un
procedimiento? en la ayuda solo la encuentro como metodo para range o
para graficos, y no me parece que sea el caso, aunque mi nivel es bajo
y quizas se me escape algo.

un saludo y hasta pronto
Ivan


Respuesta Responder a este mensaje
#12 Héctor Miguel
21/09/2006 - 01:53 | Informe spam
hola, vm_tapia !

__ 1 __
He tomado nota de tus observaciones y me llama la atencion la parte donde dices:
c) NO se puede 'cancelar' [es decir]... no se puede 'pasarle el foco' a otro control


y te lo menciono porque he intentado "pasar el foco" dentro del mismo Frame hacia otro TextBox
(todos tienen el evento _AfterUpdate) y asi si funciona,
el problema esta cuando quiero pasar el foco de un TextBox de un Frame X a otro TextBox de otro Frame...


__ 2 __
el campo de cantidad solamente acepta NUMEROS? y si ha alguien se le ocurre capturar una letra que pasa?
como te daras cuenta, con este tipo de preguntas y comentarios, aumenta la problematica en el dise#o y programacion.


__ 3 __
[p.e. cuando estableces el PU3.Locked en True... no se ve donde lo regreses a False y es probable que este quedando bloqueado] -?-


mira despues de la linea ELSE



1) [me parece que] existe un 'bug' -precisamante- al intentar pasarle el foco a un 'Frame' desde el evento '_afterupdate' :-(
[y es probable que en otros eventos tambien, dependiendo de la forma en que el control 'activo' pierda el foco] :)
de lo contrario, seria suficiente pasarle el foco al 'Frame' y lo tomaria 'realmente' su control #1 [en orden de tabulacion] :))

2) los textboxes 'aceptan'... cualquier caracter [no solamente numeros]... a menos que tu le indiques una 'restriccion' a la entrada...
[p.e.] mediante el evento '_keypress' +/- como sigue:
-> 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

3) [cierto] :) me 'ahorre' la lectura de las siguientes lineas... [te hago comentarios en el sigiente post] ;)

saludos,
hector.
Respuesta Responder a este mensaje
#13 Ivan
21/09/2006 - 02:24 | Informe spam
Hola Victor Manuel

Solo quiero darte las gracias y comentarte que lo que me llama la
atencion de ClearContents es su uso en tu codigo.

Pero en cualquier caso da lo mismo, me imagino que algo se me sigue
escapando.

Muchas gracias de todas formas

Un saludo
Ivan
Respuesta Responder a este mensaje
#14 vm_tapia
21/09/2006 - 17:43 | Informe spam
"Ivan" wrote:

Solo quiero darte las gracias y comentarte que lo que me llama la
atencion de ClearContents es su uso en tu codigo.



Ivan:

el uso que le doy al Clearcontents en mi codigo es precisamente lo que te
idique en la primer respuesta que te hice. Como su funcion es la de BORRAR y
al momento de capturar un guion en el TextBox, como no deseo guardarlo,
conservarlo, etc. simplemente lo borro.

Saludos
Victor Manuel
Respuesta Responder a este mensaje
#15 vm_tapia
21/09/2006 - 17:49 | Informe spam
"Héctor Miguel" wrote:
1) [me parece que] existe un 'bug' -precisamante- al intentar pasarle el foco a un 'Frame' desde el evento '_afterupdate' :-([y es probable que en otros eventos tambien, dependiendo de la forma en que el control 'activo' pierda el foco]:) de lo contrario, seria suficiente pasarle el foco al 'Frame' y lo tomaria 'realmente' su control #1 [en orden de tabulacion] :))
2) los textboxes 'aceptan'... cualquier caracter [no solamente numeros]... a menos que tu le indiques una 'restriccion' a la entrada...
[p.e.] mediante el evento '_keypress' +/- como sigue:
-> 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



1.- lo del "bug" ¿te refieres a un problema de Excel en el evento
_AfterUpdate?

2.- este codigo esta de maravilla, como veras en el codigo que te pedi tu
opinion, trate de hacer "lo mismo" pero gracias a ti, con este codigo se
simplifica el que te expuse.

Gracias, espero tus comentarios (que de entrada ya se simplifico con el
tuyo) al codigo que hice.

Saludos
Victor Manuel.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida