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

#1 Héctor Miguel
15/09/2006 - 06:47 | Informe spam
hola, vm_tapia !

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 decapturar un - (guion) en cualquier TextBox del Frame2
el enfoque se establezca en el primer TextBox del Frame3 [...]
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?



1) [hasta donde se]... los errores 800xxxx o -2147xxxx... significan que...
-> ocurrio una llamada a un 'proveedor/servidor/objeto/...' que NO estaba 'disponible/visible/...' [al menos, en ese momento] -?-
y/o el control [ObsFact] NO puede 'recibir el foco' [quizar] por estar oculto/bloqueado/deshabilitado/... [o el Frame3] -?-

2) podrias ahorrarte las 'llamadas' al nombre del formulario [AltaFacturas] si el codigo esta dentro del modulo del mismo formulario -?-

comentas [si hubiera] algun detalle mas... 'significativo' ?
saludos,
hector.

__ el codigo expuesto __
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
Respuesta Responder a este mensaje
#2 vm_tapia
19/09/2006 - 23:48 | Informe spam
Hector Miguel:

No encuentro NADA que me impida mover el foco al TextBox (ObsFact), todo
esta habilitado, visible, el orden de tabulacion esta Ok., etc. lo unico que
se me ocurre es lo siguiente:

dentro del formulario tengo ciertos TextBox con el Locked habilitado ¿tendra
esto algo que ver?

Gracias.


"Héctor Miguel" wrote:

hola, vm_tapia !

> 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 decapturar un - (guion) en cualquier TextBox del Frame2
> el enfoque se establezca en el primer TextBox del Frame3 [...]
> 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?

1) [hasta donde se]... los errores 800xxxx o -2147xxxx... significan que...
-> ocurrio una llamada a un 'proveedor/servidor/objeto/...' que NO estaba 'disponible/visible/...' [al menos, en ese momento] -?-
y/o el control [ObsFact] NO puede 'recibir el foco' [quizar] por estar oculto/bloqueado/deshabilitado/... [o el Frame3] -?-

2) podrias ahorrarte las 'llamadas' al nombre del formulario [AltaFacturas] si el codigo esta dentro del modulo del mismo formulario -?-

comentas [si hubiera] algun detalle mas... 'significativo' ?
saludos,
hector.

__ el codigo expuesto __
> 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



Respuesta Responder a este mensaje
#3 vm_tapia
19/09/2006 - 23:53 | Informe spam
Hector Miguel:

Tambien ha estado probando con el metodo siguiente

AltaFacturas.Controls("ObsFact").SetFocus

y me aparaece el mismo numero de error ademas del mensjae de que no se
encontra el objeto especificado.

Gracias.



"vm_tapia" wrote:

Hector Miguel:

No encuentro NADA que me impida mover el foco al TextBox (ObsFact), todo
esta habilitado, visible, el orden de tabulacion esta Ok., etc. lo unico que
se me ocurre es lo siguiente:

dentro del formulario tengo ciertos TextBox con el Locked habilitado ¿tendra
esto algo que ver?

Gracias.


"Héctor Miguel" wrote:

> hola, vm_tapia !
>
> > 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 decapturar un - (guion) en cualquier TextBox del Frame2
> > el enfoque se establezca en el primer TextBox del Frame3 [...]
> > 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?
>
> 1) [hasta donde se]... los errores 800xxxx o -2147xxxx... significan que...
> -> ocurrio una llamada a un 'proveedor/servidor/objeto/...' que NO estaba 'disponible/visible/...' [al menos, en ese momento] -?-
> y/o el control [ObsFact] NO puede 'recibir el foco' [quizar] por estar oculto/bloqueado/deshabilitado/... [o el Frame3] -?-
>
> 2) podrias ahorrarte las 'llamadas' al nombre del formulario [AltaFacturas] si el codigo esta dentro del modulo del mismo formulario -?-
>
> comentas [si hubiera] algun detalle mas... 'significativo' ?
> saludos,
> hector.
>
> __ el codigo expuesto __
> > 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
>
>
>
Respuesta Responder a este mensaje
#4 Ivan
20/09/2006 - 00:19 | Informe spam
Hola vm_tapia

disculpad la intromision, sobre todo porque si alguien te puede ayudar,
uno de los que mas es Hector Miguel y no un servidor, pero hay una cosa
en tu codigo que me llama la atencion y no se si tendra que ver en el
problema (o el problema es mi ignorancia).

AltaFacturas.C3.Value = ClearContents

¿ClearContents que es? ¿una variable? si es asi, tenia entendido que
vba da problemas cuando se usan como nombre de variables terminos
integrados dentro del mismo vba, y, si no me equivoco, clearcontents es
un metodo del objeto range (y quizas de alguno mas)

No se si tendra algo que ver, pero al no llevar punto ni estar dentro
de un bloque with me ha llamado la atencion, pues no se a que hace
referencia. A lo mejor estoy diciendo una tonteria, pero por si acaso.

Un saludo, y espero que HM, o cualquier otro te eche una mano

un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#5 Héctor Miguel
20/09/2006 - 05:54 | Informe spam
hola, vm_tapia !

Tambien ha estado probando con el metodo siguiente
AltaFacturas.Controls("ObsFact").SetFocus
y me aparaece el mismo numero de error ademas del mensjae de que no se encontra el objeto especificado...



1) de acuerdo con la ayuda en linea de vba-excel consultando acerca del evento '_afterupdate', podria comentarte lo siguiente:
a) es un evento donde la 'actualizacion' del contenido del control, ocurre SOLO al salir del control
b) es [practicamente] 'igual' al evento '_exit', solo que este ultimo puede 'atrapar/evitar/...' la salida del control
c) NO se puede 'cancelar' [es decir]... no se puede 'pasarle el foco' a otro control
d) la forma en que lo administras [re/modificando su contenido por instrucciones If...ElseIf...] tiene 'efectos de repeticion'
e) [y algunas otras consideraciones y detalles mas...] :))

2) si cambiaras tu codigo del evento '_afterupdate'... al evento '_exit' de los controles, no obtendrias el mensaje de error... PERO...
a) el evento '_exit' sucede instantes ANTES de que ocurra el evento [es por eso que se puede 'atrpar']... sin embargo...
b) el control 'activo'... NO SABE a cual control va a 'pasarle el foco' [ni el que lo reciba sabe de cual 'proviene'] :)) [entonces]...

3) para poder 'manipular' a cual control le 'concedes' el foco [de manera discrecional, y hasta donde se]...
a) lo mejor es a traves de un procedimiento 'de verificacion' de las condiciones 'pertinentes' para que el foco se pase a 'X' control
b) podrias [p.e.] en el codigo del control que ejecute las acciones 'finales', establecer un mecanismo que vaya comprobando...
1) si alguno de los controles NO 'cumple' con los requisitos del codigo a ejecutarse... 'mande' el foco al control 'pendiente'
2) establecer una 'cadena de condiciones' [p.e. revisando el contenido de los controles 'revisables' y volver al punto anterior -?-

4) [seguramante] tendras otros controles con 'manejo similar' [al codigo que expusiste desde la consulta original], por lo que...
sera necesario un re-planteamiento de la secuencia de comprobaciones via procedimientos 'auxiliares'... y algunas otras 'cosillas'
[p.e. cuando estableces el PU3.Locked en True... no se ve donde lo regreses a False y es probable que este quedando bloqueado] -?-

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

> __ el codigo expuesto __
> > 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
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida