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

#31 AnSanVal
22/09/2006 - 22:17 | Informe spam
Hola Victor Manuel (creo que) Ivan tiene razón, y que su planteamiento No es
erroneo.
(Creo que) Tú no estas usando Option Explicit y por ello Excel no te pide
que declares las variables.
En los ejemplos que pones de la ayuda, no aparece la sintaxis que tu
utilizas.
Donde tú pones: AltaFacturas.C3.Value = ClearContents , podrias poner
igualmente: AltaFacturas.C3.Value = HugoChavez [por poner algo] y te
funcionaría igualmente. La razón es que al no darle ningún valor a la
variable , aplica "nada" al cuadro de texto.

Saludos desde Tenerife (Islas Canarias).
******************************************

"vm_tapia" escribió en el mensaje
news:
Ivan:

lo siguiente lo he obtenido DIRECTAMENTE de la ayuda de Visual Basic
==> Método ClearContents

Vea también Corresponde a EjemploDetalles

Borra las fórmulas del gráfico. Borra los datos de un gráfico, pero deja
intacto el formato.

expresión.ClearContents
expresión requerida. Una expresión que devuelve un objeto ChartArea o
Range.

Ejemplo
En este ejemplo se borran las fórmulas de las celdas A1:G37 de Sheet1 pero
se deja intacto el formato.

Worksheets("Sheet1").Range("A1:G37").ClearContents

En este ejemplo se borran los datos de Chart1, pero se deja intacto el
formato.

Charts("Chart1").ChartArea.ClearContents
==> Conjunto Range
Vea también PropiedadesMétodosEventosDetallesVarios objetos
Range
Varios objetos


Representa una celda, una fila, una columna, una selección de celdas que
contienen uno o más bloques contiguos de celdas o un rango 3D.

Uso del conjunto Range
En esta sección se describen los siguientes métodos y propiedades para
devolver un objeto Range:

Propiedad Range
Propiedad Cells
Range y Cells
Propiedad Offset
Método Union
Propiedad Range
Use Range(arg), donde arg asigna un nombre al rango, para devolver un
objeto
Range que represente una sola celda o un rango de celdas. El ejemplo
siguiente coloca el valor de la celda A1 en la celda A5.

Worksheets("Sheet1").Range("A5").Value = _
Worksheets("Sheet1").Range("A1").Value

El ejemplo siguiente rellena el rango A1:H8 con números aleatorios
estableciendo la fórmula de cada celda del rango. La propiedad Range, si
se
emplea sin un calificador de objeto (un objeto colocado a la izquierda del
punto), devuelve un rango de la hoja activa. Si la hoja activa no es una
hoja
de cálculo, este método no se llevará a cabo con éxito. Use el método
Activate para activar una hoja de cálculo antes de usar la propiedad Range
sin un calificador de objeto explícito.

Worksheets("Sheet1").Activate
Range("A1:H8").Formula = "=Rand()" 'Range is on the active sheet

El ejemplo siguiente borra el contenido del rango denominado Criterios.

Worksheets(1).Range("Criteria").ClearContents

Si usa un argumento de texto para la dirección del rango, deberá
especificar
la dirección en notación de estilo A1 (no podrá usar la notación F1C1).

Propiedad Cells
Use Cells(fila; columna), donde fila es el índice de fila y columna es el
índice de columna, para devolver una sola celda. El ejemplo siguiente
establece en 24 el valor de la celda A1.

Worksheets(1).Cells(1, 1).Value = 24

El ejemplo siguiente establece la fórmula de la celda A2.

ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)"

Aunque también puede usar Range("A1") para devolver la celda A1, en
algunas
ocasiones la propiedad Cells puede ser más conveniente, ya que permite
usar
una variable para la fila o la columna. El ejemplo siguiente crea
encabezados
de fila y columna en la Hoja1. Tenga en cuenta que, después de activar la
hoja de cálculo, puede usar la propiedad Cells sin una declaración
explícita
de hoja (devuelve una celda de la hoja activa).

Sub SetUpTable()
Worksheets("Sheet1").Activate
For TheYear = 1 To 5
Cells(1, TheYear + 1).Value = 1990 + TheYear
Next TheYear
For TheQuarter = 1 To 4
Cells(TheQuarter + 1, 1).Value = "Q" & TheQuarter
Next TheQuarter
End Sub

Aunque podría usar funciones de cadena de Visual Basic para modificar las
referencias de estilo A1, es mucho más sencillo (y una mejor práctica de
programación) usar la notación Cells(1, 1).

Para devolver parte de un rango use expresión.Cells(fila; columna), donde
expresión es una expresión que devuelve un objeto Range y fila y columna
son
relativas a la esquina superior izquierda del rango. El ejemplo siguiente
establece la fórmula de la celda C5.

Worksheets(1).Range("C5:C10").Cells(1, 1).Formula = "=Rand()"

Range y Cells
Para devolver un objeto Range use Range(celda1; celda2), donde celda1 y
celda2 son objetos Range que especifican las celdas inicial y final. El
ejemplo siguiente establece el estilo de línea de los bordes de las celdas
A1:J10.

With Worksheets(1)
.Range(.Cells(1, 1), _
.Cells(10, 10)).Borders.LineStyle = xlThick
End With

Observe el punto delante de cada propiedad Cells. El punto es necesario si
el resultado del enunciado With precedente se aplica a la propiedad Cells,
en
cuyo caso, se indica que las celdas están en la hoja de cálculo uno (sin
el
punto, la propiedad Cells devolvería las celdas de la hoja activa).

Propiedad Offset
Use Offset(fila; columna), donde fila y columna son los desplazamientos de
fila y columna, para devolver un rango con un desplazamiento específico
con
respecto a otro. El ejemplo siguiente selecciona la celda situada tres
filas
debajo y una columna a la derecha de la celda de la esquina superior
izquierda de la selección actual. No se puede seleccionar una celda que no
esté en la hoja activa, por lo que primero deberá activar la hoja.

Worksheets("Sheet1").Activate
'Can't select unless the sheet is active
Selection.Offset(3, 1).Range("A1").Select

Método Union
Use Union(rango1, rango2, ...) para devolver rangos de varias áreas, es
decir, rangos compuestos por dos o más bloques contiguos de celdas. El
ejemplo siguiente crea un objeto definido como la unión de los rangos
A1:B2 y
C3:D4 y, a continuación, selecciona el rango definido.

Dim r1 As Range, r2 As Range, myMultiAreaRange As Range
Worksheets("sheet1").Activate
Set r1 = Range("A1:B2")
Set r2 = Range("C3:D4")
Set myMultiAreaRange = Union(r1, r2)
myMultiAreaRange.Select

La propiedad Areas es muy útil para trabajar con selecciones que contienen
varias áreas. Divide una selección de varias áreas en objetos Range
individuales y después devuelve los objetos en forma de conjunto. Puede
usar
la propiedad Count del conjunto devuelto para comprobar una selección que
contiene varias áreas, como se muestra en el siguiente ejemplo.

Sub NoMultiAreaSelection()
NumberOfSelectedAreas = Selection.Areas.Count
If NumberOfSelectedAreas > 1 Then
MsgBox "You cannot carry out this command " & _
"on multi-area selections"
End If
End Sub
==> Método Clear
Vea también Corresponde a EjemploDetallesMétodo Clear tal como se
aplica
a los objetos ChartArea, Legend y Range.

Borra todo el objeto.

expresión.Clear
expresión Requerida. Expresión que devuelve uno de los objetos arriba
mencionados.

Método Clear tal como se aplica al objeto CellFormat.

Elimina los criterios establecidos en las propiedades FindFormat y
ReplaceFormat.

expresión.Clear
expresión Requerida. Expresión que devuelve un objeto CellFormat.

Método Clear tal como se aplica al objeto XPath.

Borra la asignación de esquema de las celdas asignadas al objeto XPath
especificado.

expresión.Clear
expresión Requerida. Expresión que devuelve un objeto XPath.

Comentarios
Este método no borra los datos de las celdas asignadas al objeto XPath
especificado. Use el método Clear del objeto Range para borrar los datos
de
las celdas.

Si el objeto XPath especificado está asignado en una lista XML, se quitará
la asignación de esquema, pero no se eliminará la lista de la hoja de
cálculo.

Ejemplo
En este ejemplo se borran las fórmulas y el formato de las celdas A1:G37
de
Sheet1.

Worksheets("Sheet1").Range("A1:G37").Clear

En este ejemplo se borra el área de gráfico (datos del gráfico y formato)
de
Chart1.

Charts("Chart1").ChartArea.Clear
==>
en NINGUN lado dice que sea una VARIABLE, espero que se halla modificado
tu
conclusion, (como lo mencionaste anteriormente, "Puede estar erronea") la
cual en efecto SI esta erronea.

insisto en que algo tiene o le falta a tu Excel o a tu Visual Basic.

Saludos
Victor Manuel.

Respuesta Responder a este mensaje
#32 Ivan
22/09/2006 - 23:36 | Informe spam
Hola AnSanVal

Gracias por la aclaracion, si no, me hubiera quedado el gusanillo de la
duda.

OptionExplicit era la pieza del puzle que se me escapaba/no veia

Muchas gracias de nuevo

Un saludo y hasta pronto
Ivan
Respuesta Responder a este mensaje
#33 Gabriel Raigosa
30/09/2006 - 18:52 | Informe spam
Carpeta
Descripción
Dirección

1
** Microsoft Excel *
http://esnips.com/web/GabrielRaigosa

2
Archivos para usar en clase
http://esnips.com/web/RaigosaClase

3
Fechas y Horas
http://esnips.com/web/RaigosaFechasHoras

4
Formato y Formato Condicional
http://esnips.com/web/RaigosaFormatos

5
Foro Excel
http://esnips.com/web/ForoExcel

6
Funciones de Busqueda
http://esnips.com/web/RaigosaBusqueda

7
Funciones de Texto
http://esnips.com/web/RaigosaTexto

8
Funciones Financieras
http://esnips.com/web/RaigosaFinancieras

9
Funciones Logicas
http://esnips.com/web/RaigosaLogicas

10
Graficos con Excel
http://esnips.com/web/RaigosaGraficos

11
Grupo (Sabados)
Privado

12
Grupo (Viernes)
Privado

13
Grupo Excel Septiembre
Privado

14
Juegos con Excel
http://esnips.com/web/RaigosaJuegosExcel

15
Macros con Excel
http://esnips.com/web/Macros-con-Excel

16
Manuales Excel
http://esnips.com/web/RaigosaManuales

17
Paginas WEB
http://esnips.com/web/RaigosaPaginasExcel

18
Practicas - XLS
http://esnips.com/web/RaigosaPracticasXLS

19
Tablas Dinámicas
http://esnips.com/web/RaigosaTablasDinamicas

20
TEST
http://esnips.com/web/GabrielRaigosa-test

21
Validación
http://esnips.com/web/RaigosaValidacion

22
Varios
http://esnips.com/web/RaigosaVarios

23
VBA - Visual Basic para Aplicaciones
http://esnips.com/web/RaigosaVBA



Gabriel Raigosa
http://esnips.com/web/Raigosa
http://esnips.com/web/ForoExcel
"vm_tapia" escribió en el mensaje
news:
| 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.
|
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida