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 !

Mostrar la cita
-> 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.
#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:
Mostrar la cita
#3 Héctor Miguel
07/03/2006 - 09:55 | Informe spam
hola, KL !

Mostrar la cita
[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.
#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:%
Mostrar la cita
Ads by Google
Search Busqueda sugerida