Saltar al contenido

Formulario para editar hojas


Antoni

Recommended Posts

Hola:

En esta ocasión os adjunto una actualización universal.

Se trata de un formulario que permite añadir, modificar, eliminar, y consultar cualquier dato de cualquier hoja de cualquier archivo.

.Trata cualquier número de filas y columnas

.Permite añadir, eliminar columnas

.Controla datos: numéricos, tipo fecha y tipo lista, obligatorios, opcionales, de consulta y ocultos

Funcionamiento:

Datos de la hoja que contiene vuestra información:

.Puede tener cualquier nombre

.La fila 1 se reserva para encabezamiento

.Los datos deben empezar en A2

Para el funcionamiento del formulario debe existir otra hoja con el nombre de vuestra hoja seguido de "-Parámetros",

(Cuidado con el acento)

Ejemplo:

Si teneis una hoja llamada "Inventario", debeis crear una hoja llamada "Inventario-Parámetros" cuyo formato está en el adjunto.

En esta hoja se informará el tipo de datos, los controles a efectuar y las listas si las hubiere.

En el ejemplo lo vereis mas claro.

La versión correcta del archivo está en el post #26.

Se recomienda leer todos los posts antes de descargar el archivo.

Saludos.

Enlace a comentario
Compartir con otras webs

Buenas Tardes Macro Antonio,

No es solamente bueno tu formulario, es lo siguiente IMPRESIONANTE.

Pero a pesar que lo explicas muy detalladamente debe haber un punto que me debo saltar, puesto que al insertar una nueva columna en columna I de la hoja datos-parametros en la celda I1 pongo Cafes, en la I2 pongo obligatorio en la I3 pongo lista y en la I4 a la I8 pongo distintos campos de texto, pero cuando vuelvo a la hoja datos para presionar el icono de formulario no me sale el campo de cafe para rellenar.

Perdona por mi torpeza, muchas gracias.

Ya lo he solucionado, mi ansia de ver algo tan bueno me ha cegado, me faltaba poner en la hoja datos en la columna I Cafes.

Muchas gracias otra vez, eres una maquina.

Enlace a comentario
Compartir con otras webs

  • 1 month later...

Buenos dias Macro Antonio,

Cuando introduzco en el formato fecha, el 2/1/2012, en vez de salir esa fecha, me sale 1/2/2012.

Me ocurre con alguna fecha más, 9/1/2012 por 1/9/2012 me cambia el dia por el mes y el mes por el dia, que es lo que hago mal????????.

Gracias por anticipado.

Un saludo

Enlace a comentario
Compartir con otras webs

  • 3 weeks later...
Perdona por mi desconocimiento, pero donde puedo probar vba.format(calendar.value, "mm/dd/yyyy"), es decir, donde lo tengo que poner.

Gracias por adelantado

Honestamente no habia (tenido la oportunidad) de probar/ver el archivo, pero tienes que ir a los modulos de clase, especificamente al "CalendarioLabel " dentro del "Private Sub MiLabel_Click()", busca la linea:

FechaCalendario = CDate(MiLabel.Tag) + X[/PHP]

Modificala por esta:

[PHP]FechaCalendario = VBA.Format(CDate(MiLabel.Tag) + X, "dd/mm/yyyy")[/PHP]

[b]

Por cierto Antoni, tu aporte, falla al momento de modificar, directamente la fecha, es decir si no clickeas otro campo y te vas directo a la fecha, se nos presenta el calendario y al elegir una fecha, pasa algo raro, se limpian los campos y lanza (supongo) el correlativo, ignorando esto... al darle click al boton "modificar" te advierte y si le das click en "si" logicamente lanza el error de elegir un registro, pues los campos estan vacios y ya no deja modificar el registro[/b]

Saludos

Enlace a comentario
Compartir con otras webs

Hola a todos:

He estado revisando a fondo el tema del calendario, y lo único que he podido corroborar es la afirmación de Gerson ralacionado con el borrado de datos si nos posicionamos en el campo fecha, si este es el primer dato.

Por mas que he seguido el código no consigo dar con el problema, ya que instrucción a instrucción no se reproduce el error.

Continuaré investigando a ver si doy con el diagnostico, mientras, haciendo click en cualquier dato antes que en la fecha, el problema se soluciona.

Y en cuanto a tus problemas jabrajam, no se que decirte, ya que por mas pruebas que hago, no me ocurre nada anormal, salvo el ya mencionado.

Saludos

Enlace a comentario
Compartir con otras webs

Gerson:

Voy a ver, pero el problema creo que se desencadena después del evento MouseDown de los datos tipo fecha.

Este evento está en un módulo de clase y es común a todos los textbox del formulario.

Al estar el calendario en un formulario a parte, y tener los días su propio evento en otro módulo de clase, creo que en algún punto pierdo el lugar de retorno al formulario principal.

Estoy en ello.

Saludos y gracias

Enlace a comentario
Compartir con otras webs

Buenos noches,

he conseguido que no me salga error de sintaxis pero sigue sin funcionarme, he puesto 9/1/2012 y me sale 1/9/2012 he probado con otra fecha 1/3/2012 y me sale 3/1/2012.

Lo que he cambiado ha sido "FechaCalendario = CDate(MiLabel.Tag) + X" por

"FechaCalendario = VBA.Format(CDate(MiLabel.Tag) + X, "dd/mm/yyyy")"

en el modulo de clase- "calendariolabel"- Private Sub MiLabel_Click().

Que estoy haciendo mal????

gracias por vuestra ayuda

Enlace a comentario
Compartir con otras webs

No creo que estés haciendo nada mal. Debe haber algo en tu configuración que no identifico. Tiene que ver algo con el formato americano (EEUU) de fechas, pero no se el que.

Comprueba que en el resto de meses también te invierte el mes y el día, y te generaré una versión especifica para ti.

Como último intento, prueba:

[COLOR=#333333][FONT=Verdana]"FechaCalendario = VBA.Format(CDate(MiLabel.Tag) + X, "mm/dd/yyyy")"[/FONT][/COLOR][/CODE]

Enlace a comentario
Compartir con otras webs

Buenos noches Macro,

Me sigue saliendo igual, pero solo son con fechas en conctreto, es decir, solo me ocurre cuando seleciono los dias del 1 al 12 de cada mes, a partir del dia 12 funciona perfectamente.

Adicionalmente me gustaria hacerte una pregunta respecto al formulario, lo he intentado pero no lo he conseguido, se puede modificar el campo socio una vez grabado, es decir, si yo realizo una visita y relleno todos los datos y al cabo de varios dias vuelvo a ir a ese cliente y tengo que modificar algun campo, para no volver a rellenar todos los datos podria selecionar el cliente y cambiar algun campo pero conservando el antiguo registro y que me diera un regritro nuevo con todos los campos iguales a excepcion de los cambios que realice y el campo socio (autonumerico) que tendria que darme uno nuevo, espero habertelo podido explicar bien.

Si no se pudiera da igual sigue siendo increible el formulario.

Un saludo y muchas gracias por ayudarme.

Enlace a comentario
Compartir con otras webs

Hola!

Con vuestro permiso la solución que propongo es colocar el formato justo antes

MiLabel.Tag = Format((MiLabel.Tag), "mm/dd/yyyy")

FechaCalendario = CDate(MiLabel.Tag) + x

de esta manera a mi me esta funcionando, que decir que mis conocimientos son pobrisimos y que me salió de chiripa después de mucho probar por lo que no sé si será una buena solución.

La verdad que el archivo es impresionante y me está siendo de mucha utilidad, muchas gracias por este tipo de aportes.

Un saludo

Enlace a comentario
Compartir con otras webs

Nuevas Noches,

Lo que he cambiado ha sido "FechaCalendario = CDate(MiLabel.Tag) + X" por

"MiLabel.Tag = Format((MiLabel.Tag), "mm/dd/yyyy")

FechaCalendario = CDate(MiLabel.Tag) + x"

en el modulo de clase- "calendariolabel"- Private Sub MiLabel_Click().

Y sigue sin funcionarme los dias que estas entre los dias 1 al 12 de cada mes, donde me cambia el dia por el mes y viceversa.

Que hago mal????????????????

Un saludo y gracias a todos por intentar solucionarlo.

P.D. Macro, pudistes leer mi pregunta sobre la opcion de modificar???

Enlace a comentario
Compartir con otras webs

  • 2 weeks later...

Hola:

Subo una versión especial para Jabraham, pero puede valer a cualquiera.

He cambiado el calendario por un control DTPicker.

Muy importante: La columna que contenga datos tipo FECHA, deben tener formato TEXTO, si no, y no se porqué, en los meses de enero a septiembre, los días del 1 al 10 se invierten.

De rebote se ha arreglado el error reportado por Gerson.

Saludos a todos.

Actualización Jabraham.zip

Enlace a comentario
Compartir con otras webs

Buenas noches Macro,

En primer lugar queria agradecerte tu ayuda a mis problemas.

He probado este nuevo ficheros y por un lado se ha resuelto el problema de las fechas (enhorabuena, porque a mi me estaba volviendo loco), pero como consecuencia me ocurren varios errores:

El formato fecha, aunque lo pongas en opcional, por defecto te lo pide como obligatorio, al igual que si le metes varios campos de fecha todos ellos te los pide como obligatorios aunque les pongas opcional.

El resto de campos despues de la fecha, tambien te los pide obligatorios, a pesar que sean opcionales.

Si al insertar un nuevo registro le das a modificar se te marcan practicamente todas las casillas en amarillos aunque sean opcionales, y desaparecen algunos textbox del formulario.

Me imagino que todo esto viene originado del mismo error, pero con mis conocimientos me siento incapaz de encontrarlo por mucho que intento seguir todo el proceso.

Muchas gracias

Enlace a comentario
Compartir con otras webs

Hola de nuevo:

Bien, parece que esta vez ha quedado un poco mas arregladito.

Todo el problema consistía en haber obviado por completo los campos opcionales.

Parece que ahora ya funciona.

No obstante no dudeis, en especial Jabraham, en comunicarme cualquier incidencia.

Saludos de nuevo

Actualización Jabraham.zip

Enlace a comentario
Compartir con otras webs

Buenas noches Macro,

Agradezco tu comentario de poder seguir preguntando sobre dudas y que no me mandes lejos por pesado.

Respecto al tema de opcionales, funciona perfectamente, muchas gracias

He visto que has agregado nuevas cosas como la barra de deshabilitar el control de alta/modificaciones, pero no se cual es su finalidad.

El campo de fecha me sale algo diferente, como dividido en 2 partes donde en cada parte viene la fecha que selecionas 2 veces, esta eso correcto????.

Por ultimo aprovecho para preguntarte si es posible hacer una modificacion de un registro y cambiar el campo de auto, es decir, si yo lo utilizo para realizar visitas y hoy visito a un cliente que lo visite hace 3 dias, si pudiera utilizar los datos esos para no tenerlo que volver a rellenar todos los datos y poder cambiar el campo de auto.

Muchisimas gracias una vez mas por todo y sobre todo por tu paciencia.

Enlace a comentario
Compartir con otras webs

Hola:

El campo de fecha me sale algo diferente, como dividido en 2 partes donde en cada parte viene la fecha que selecionas 2 veces, esta eso correcto????.

La parte izquierda es el dato en si mismo, la derecha es el calendario. El objetivo es poder modificar manualmente el dato.Tal como estaba, no había manera de borrar el campo, ya que el calendario no lo permite.

He visto que has agregado nuevas cosas como la barra de deshabilitar el control de alta/modificaciones, pero no se cual es su finalidad.

Por ultimo aprovecho para preguntarte si es posible hacer una modificacion de un registro y cambiar el campo de auto, es decir, si yo lo utilizo para realizar visitas y hoy visito a un cliente que lo visite hace 3 dias, si pudiera utilizar los datos esos para no tenerlo que volver a rellenar todos los datos y poder cambiar el campo de auto.

Existe un control de seguridad que no permite pulsar el botón de añadir si hay seleccionado un registro de la lista.

Al deshabilitar ese control, puedes aprovechar los datos del registro seleccionado para no tener que volverlos a teclear si coinciden con el nuevo registro. Pero, siempre hay un pero, por definición los campos Auto están protegidos, por lo que no pueden ser modificados de forma manual, que es lo que tu pretendes..

Voy a ver de que forma podemos solucionar este tema.

Saludos

Enlace a comentario
Compartir con otras webs

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

  • 96 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Archivos

  • Estadísticas de descargas

    • Archivos
      177
    • Comentarios
      90
    • Revisiones
      27

  • Crear macros Excel

  • Mensajes

    • Hi Trate de ver que hacían las fórmulas en cuestión pero a su libro le falta o le faltan hojas, por lo que solo podría participar con un par de ideas en general. Lo que entiendo es que según el valor de B3 en C3 debe poner una fórmula u otra, así que es posible que si combina DIRECCION() con INDIRECTO() pueda intercambiar de una fórmula a otra. =SI(B3="Xl",INDIRECTO(DIRECCION(3,5)),SI(O(B3=1,B3=2,B3=3),INDIRECTO(DIRECCION(4,5)),"")) Otra forma sería poner nombre a esas fórmulas en el cuadro de nombres para que las pueda mandar llamar a una o a la otra según el resultado de B3. Por favor tome en cuenta, es solo una idea.
    • Buenas tardes! Tengo el siguiente código: Private Sub btnCargaBancos_Click() Dim TasaCompra, TasaVenta As Double Dim InvBanesco, InvVzla, MontoBanesco, MontoVzla As Double Dim TasaDiaBan, TasaDiaVzla, TasaActual As Double 'Inversion = Val(txtInversion.Text) InvBanesco = Val(CDbl(txtInverBanesco.Text)) InvVzla = Val(CDbl(txtInverVzla.Text)) TasaCompra = Val(CDbl(txtTasaCompra.Text)) TasaVenta = Val(CDbl(txtTasaVenta.Text)) MontoBanesco = (InvBanesco / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) MontoVzla = (InvVzla / TasaCompra) * (1 - 0.18 / 100) * (TasaVenta * (1 - 0.18 / 100)) TasaDiaBan = (MontoBanesco / InvBanesco) * (1 - 0.055)      TasaDiaVzla = (MontoVzla / InvVzla) * (1 - 0.055) If TasaDiaBan < TasaDiaVzla Then     TasaActual = TasaDiaBan Else     TasaActual = TasaDiaVzla End If MontoBanesco = FormatNumber(MontoBanesco, 2, True, vbFalse) MontoVzla = FormatNumber(MontoVzla, 2, True, vbFalse) TasaActual = FormatNumber(TasaActual, 5, True, False) txtBcoBanesco.Value = MontoBanesco txtBcoVenezuela.Value = MontoVzla txtTasaDiaria.Value = TasaActual End Sub   Como se puede apreciar InvBanesco ,  InvVzla , TasaCompra y TasaVenta, son valores que introduce el usuario a través de los respectivos cuadros de texto. Tengo los siguientes problemas: a. Las fórmulas no se ejecutan correctamente (pareciese que no reconociese los números entrados vía cuadros de texto). b. Al darle valor cero (0) a cualquiera de los valores de InvBanesco o  InvVzla, me genera un error en TasaDiaBan o TasaDiaVzla (según sea el caso), aunque, como se puede apreciar, debería generar un valor cero (0). Como dije en mi presentación estoy empezando en esto de la codificación...y quiero aprender de Uds! Agradezco su ayuda! Nota: lamentablemente el fichero es mas grande de lo permitido y no pude anexarlo.  
    • Hola buenas tardes. En una hoja plantilla donde realizo diferentes consultas de datos. tengo ya establecido dos formulas diferentes con función SI y buscar. estos buscan diferentes rangos de datos y recibendiferentes resultados. Cada formula varia según una palabra o numero  ejemplo si pongo Xl pone la formula 1 y si pongo cualquier numero entre 1 y 3 pone la segunda formula. Lo que necesito hacer es que si en una celda de la columna B3 pongo XL debería de considerar la formula 1 y si pusiera el numero 1 me pondría la segunda formula, dentro de la misma formula. Ya agregue la función SI($C3="Xl",Formula1.. Pero no me funciona, espero me puedan ayudar.   Muchas gracias Mariano   Formula doble si en celda existe.xlsx
    • Sub control2558() Application.ScreenUpdating = False Dim I As Integer I = 4 While Sheets("FT-ADF-2558").Cells(I, 102) <> "" Sheets("FT-ADF-2558").Cells(6, 82) = Sheets("FT-ADF-2558").Cells(I, 102) Dim NombreArchivo, RutaArchivo As String NombreArchivo = "Hoja Control " & Sheets("FT-ADF-2558").Cells(I, 102) RutaArchivo = ActiveWorkbook.Path & "\" & NombreArchivo & ".xlsm" Dim NuevoLibro As Workbook Set NuevoLibro = Workbooks.Add Sheets("FT-ADF-2558").Copy Before:=NuevoLibro.Sheets(1) NuevoLibro.SaveAs Filename:=RutaArchivo NuevoLibro.Close I = I + 1 Wend MsgBox ("Proceso generado con éxito") Application.ScreenUpdating = True End Sub  
    • Ese error es porque no existe la hoja 10 con ese nombre, entonces cámbialo por FT-ADF-2558
  • Visualizado recientemente

    • No hay usuarios registrado para ver esta página.
×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.