problemas con la funcion ShowDataForm, me marca error

07/03/2006 - 06:54 por Isaac Garcia Lopez | Informe spam
Hola Amigos:
en el rango c5:g8 tengo una tabla de datos, que se dieron de alta con
anterioridad, pero si yo quiero corregir algun dato de esta tabla lo hago
con Datos | Formulario corre bien cuando lo hago fuera de la macro, pero
al correr la setencia de abajo me marca un error que dice "se ha producido
el error 1004 en tiempo de ejecución: error en el metodo ShowDataForm de
la clase Worksheet, alguien me puede ayudar a correr el Formulario desde una
macro, saludos y gracias de nuevo


Range("C5:G8").Select
ActiveSheet.ShowDataForm
Range("D12").Select
End Sub

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
07/03/2006 - 07:39 | Informe spam
hola, Isaac !

en el rango c5:g8 tengo una tabla de datos, que se dieron de alta con anterioridad
pero si yo quiero corregir algun dato de esta tabla lo hago con Datos | Formulario corre bien cuando lo hago fuera de la macro
pero al correr la setencia de abajo me marca un error que dice "se ha producido el error 1004 en tiempo de ejecucion:
error en el metodo ShowDataForm de la clase Worksheet
alguien me puede ayudar a correr el Formulario desde una macro...
Range("C5:G8").Select
ActiveSheet.ShowDataForm
Range("D12").Select
End Sub



-> cuando 'pretendes' mostrar el formulario de una hoja [datos / formulario...] ->por codigo<-...
excel 'trata' de encontrar un nombre de rango que haga referencia a la 'base de datos'...
o [si no lo encuentra]... 'busca' en la hoja ->DENTROdel rango 'A1:B2'<-

las 'alternativa' [que veo] para que 'funcione SIN errores' el formulario de datos por codigo, son...
o... MOVER la base de datos para que inicie en 'A1'
o... usar un objeto 'commandbar' [simulando la ejecucion de: -menu- datos / formulario...]
[obviamente, la hoja 'activa' DEBE ser la 'correcta Y la celda 'activa' estar dentro de la base de datos]

1.- si te 'decides' por mover la base de datos a 'A1'...
podrias 'presentar' el formulario ->de cualquier hoja<- [si existe] DESDE cualquiera otra como 'activa' [p.e.]
si estas en hoja2 y quieres mostrar el formulario de hoja1...
Worksheets("Hoja1").ShowDataForm

2.- si 'prefieres/necesitas' DEJAR la base de datos 'donde esta'... ['tendras que']...
-> activar la hoja Y una celda 'apropiadas' y...
-> ejecutar el comando [datos / formulario...] ->por codigo<- +/- como sigue...
Worksheets("Hoja1").Select
Range("c5").Select
Application.CommandBars.FindControl(Id:†0).Execute

encontraras la explicacion de este 'comportamiento' en la siguiente pagina...
http://support.microsoft.com/defaul...es;e110462
El metodo ShowDataForm provoca un fallo si no se encuentran datos
[traduccion automatica al castellano]

saludos,
hector.
Respuesta Responder a este mensaje
#2 KL
07/03/2006 - 09:01 | Informe spam
Hola chicos,

Si no recuerdo mal, una otra opcion es ponerle un el nombre "database" (no se si habria que traducirlo al castellano en la version castellana de Office) a la tabla y luego usar el codigo original.

P.ej.:
1) menu Insertar>Nombre>Definir...
2) nombre: "database" (sin las comillas)
3) se refiere a:
si la columna [C] contiene cadenas de texto, entonces
=$C$5:INDICE($G:$G;COINCIDIR(REPETIR("z";255);$C:$C))
si la columna [C] contiene valores numericos (incl. fechas), entonces
=$C$5:INDICE($G:$G;COINCIDIR(1e307;$C:$C))
4) boton: Anadir, boton: Aceptar

Saludos,
KL


"Héctor Miguel" wrote in message news:
hola, Isaac !

en el rango c5:g8 tengo una tabla de datos, que se dieron de alta con anterioridad
pero si yo quiero corregir algun dato de esta tabla lo hago con Datos | Formulario corre bien cuando lo hago fuera de la macro
pero al correr la setencia de abajo me marca un error que dice "se ha producido el error 1004 en tiempo de ejecucion:
error en el metodo ShowDataForm de la clase Worksheet
alguien me puede ayudar a correr el Formulario desde una macro...
Range("C5:G8").Select
ActiveSheet.ShowDataForm
Range("D12").Select
End Sub



-> cuando 'pretendes' mostrar el formulario de una hoja [datos / formulario...] ->por codigo<-...
excel 'trata' de encontrar un nombre de rango que haga referencia a la 'base de datos'...
o [si no lo encuentra]... 'busca' en la hoja ->DENTROdel rango 'A1:B2'<-

las 'alternativa' [que veo] para que 'funcione SIN errores' el formulario de datos por codigo, son...
o... MOVER la base de datos para que inicie en 'A1'
o... usar un objeto 'commandbar' [simulando la ejecucion de: -menu- datos / formulario...]
[obviamente, la hoja 'activa' DEBE ser la 'correcta Y la celda 'activa' estar dentro de la base de datos]

1.- si te 'decides' por mover la base de datos a 'A1'...
podrias 'presentar' el formulario ->de cualquier hoja<- [si existe] DESDE cualquiera otra como 'activa' [p.e.]
si estas en hoja2 y quieres mostrar el formulario de hoja1...
Worksheets("Hoja1").ShowDataForm

2.- si 'prefieres/necesitas' DEJAR la base de datos 'donde esta'... ['tendras que']...
-> activar la hoja Y una celda 'apropiadas' y...
-> ejecutar el comando [datos / formulario...] ->por codigo<- +/- como sigue...
Worksheets("Hoja1").Select
Range("c5").Select
Application.CommandBars.FindControl(Id:†0).Execute

encontraras la explicacion de este 'comportamiento' en la siguiente pagina...
http://support.microsoft.com/defaul...es;e110462
El metodo ShowDataForm provoca un fallo si no se encuentran datos
[traduccion automatica al castellano]

saludos,
hector.


Respuesta Responder a este mensaje
#3 Héctor Miguel
07/03/2006 - 09:55 | Informe spam
hola, KL !

Si no recuerdo mal, una otra opcion es ponerle un el nombre "database"
(no se si habria que traducirlo al castellano en la version castellana de Office) a la tabla y luego usar el codigo original...



[hasta donde se]...
1) 'el nombre' -> lo asigna excel [de forma 'interna' y -generalmente- 'temporal']
2) si excel es en ingles... [efectivamente] 'le pone' -> database PERO...
si es en castellano... le pone -> 'base de datos' <= OJO: un nombre 'definido' CON ESPACIOS -?-
si es en otro idioma... ???
3) si 'lo pone' el usuario...
a) NO puede usar espacios en los nombres :-(
b) si sustituyes los espacios por un guion-bajo -> '_' -> excel NO 'le hace caso' :-(
4) mencione lo 'conducente' [al nombre]... en la segunda linea de 'mi' introduccion...
'... excel 'trata' de encontrar un nombre de rango que haga referencia a la 'base de datos'... '

igual y estoy 'pasando por alto'... algun detalle -?-

saludos,
hector.
Respuesta Responder a este mensaje
#4 Isaac Garcia Lopez
10/03/2006 - 01:27 | Informe spam
Mil gracias, me funciono muy bien, quedo como sigue:

Sub corregir_proveedores()
'
Application.Goto Reference:="bd_inicio" ' al inicio de la base de
datos nombre la celda de la izquierda superior, como bd_inicio, para
ubicarme alli
ActiveWindow.LargeScroll Down:=-2 ' para evitar que se vea de fondo
en la pantalla los numeros de la base de datos
Application.CommandBars.FindControl(ID:†0).Execute ' y con
commandbars funciono de lujo, mil veces agradecido
Range("A1").Select
End Sub

Isaac




"Héctor Miguel" escribió en el mensaje
news:%
hola, KL !

Si no recuerdo mal, una otra opcion es ponerle un el nombre "database"
(no se si habria que traducirlo al castellano en la version castellana de
Office) a la tabla y luego usar el codigo original...



[hasta donde se]...
1) 'el nombre' -> lo asigna excel [de forma 'interna' y -generalmente-
'temporal']
2) si excel es en ingles... [efectivamente] 'le pone' -> database
PERO...
si es en castellano... le pone -> 'base de datos' <= OJO: un nombre
'definido' CON ESPACIOS -?-
si es en otro idioma... ???
3) si 'lo pone' el usuario...
a) NO puede usar espacios en los nombres :-(
b) si sustituyes los espacios por un guion-bajo -> '_' -> excel NO 'le
hace caso' :-(
4) mencione lo 'conducente' [al nombre]... en la segunda linea de 'mi'
introduccion...
'... excel 'trata' de encontrar un nombre de rango que haga referencia
a la 'base de datos'... '

igual y estoy 'pasando por alto'... algun detalle -?-

saludos,
hector.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida