Excel - Abrir siempre en la misma hoja, y no permitir datos en blanco.

 
Vista:
sin imagen de perfil
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Abrir siempre en la misma hoja, y no permitir datos en blanco.

Publicado por Juan Cruz (28 intervenciones) el 23/09/2019 12:45:06
Hola, buen dia para todos.
Realice el formulario que dejo adjunto aca abajo, y me estoy trabado en no poder hacer lo siguiente:

1- Abrir el libro siempre en la misma hoja, la hoja "PRINCIPAL".
2- Que al ejecutar alguna de las macros, no muestre la pagina anterior, como si estuviera lento el excel, ¿Me explico bien?
3- en la hoja "carga", no permitir celdas vacias en el rango A7:A14.
4-Al cargar un nuevo codigo en la hoja "cargar codigo", no permita cargalo, si ese codigo ya existe en el registro de la hoja "Codigos"..

Alguien puede guiarme de como puedo llegar a solucionar esos problemas?

PD: El codigo de proteccion de hoja es: 412822

muchisimas gracias.


saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Abrir siempre en la misma hoja, y no permitir datos en blanco.

Publicado por Juan Cruz (28 intervenciones) el 23/09/2019 13:55:33
Mi idea no es que ustedes lo hagan por mi, si no que me guien para poder aprender a hacerlo..

Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Andres Leonardo
Val: 3.136
Plata
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Abrir siempre en la misma hoja, y no permitir datos en blanco.

Publicado por Andres Leonardo (1583 intervenciones) el 23/09/2019 15:58:45
vamos por partes

0.- libro debe ser xls o xlsm

1- Abrir el libro siempre en la misma hoja, la hoja "PRINCIPAL".
1.1 en el eventor workbook.open deberas indicar sheets("PRINCIPAL").select
--asi siempre que se abra se vera como la primera hoja.

2- Que al ejecutar alguna de las macros, no muestre la pagina anterior, como si estuviera lento el excel, ¿Me explico bien?
2.2 en las mascros deberas escribir screeupdate = false
1
Application.ScreenUpdating = false
al terminar la macro deberas volverlo a habilitar

1
Application.ScreenUpdating = True

3- en la hoja "carga", no permitir celdas vacias en el rango A7:A14.
en la hoja deberas declar este evento
1
2
3
4
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' aqui validar el rango.
si el rango es el que queires y ademas es = "" enviar mensaje....
End Sub



4-Al cargar un nuevo codigo en la hoja "cargar codigo", no permita cargalo, si ese codigo ya existe en el registro de la hoja "Codigos"..
esto no entiendo ... mas parece una validacion de la hoja ... puedes hacer que si contar.si y es mayor a 2 pues no lo dejjes cargar y lo mandas a cero ... podrias explicarte

Espero no haberlo hecho por ti si no guiarte

SAludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Abrir siempre en la misma hoja, y no permitir datos en blanco.

Publicado por Juan Cruz (28 intervenciones) el 23/09/2019 16:12:34
Muchas gracias, ahora voy a probar todos esos codigos, y ver si pude solucionar o no.

En cuanto al punto 4, Este formulario, trata sobre productos de la empresa, en la hoja "Carga", hay una celda donde hay que escribir el codigo, los codigos vienen de una validacion de datos de la hoja "codigos".
si voy a la hoja "cargar codigos" puedo ingresar nuevos datos en la tabla, y eso introduce los codigos en la lista desplegable.. lo que quiero evitar, es que haya 2 codigos iguales..

Por ejemplo, si el codigo 123 con descripcion Telefono, ya esta cargado, y alguien intenta volver a cargalo, no lo permita.

Ahora pudiste entenderme mejor?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Abrir siempre en la misma hoja, y no permitir datos en blanco.

Publicado por Antoni Masana (2477 intervenciones) el 23/09/2019 16:42:02
PUNTO - 1

La solución radica en un evento que se ejecuta al abrir el libro:

1
2
3
Private Sub Workbook_Open()
    Sheets("PRINCIPAL").Select
End Sub

Lo puedes encontrar en ThisWorkbook

PUNTO - 2

No entiendo que quieres decir con: "... no muestre la pagina anterior, como si estuviera lento el excel ..."

Mira esta página: https://www.todoexcel.com/14-formas-de-acelerar-y-optimizar-tus-macros-excel/

En ella encontradas formas de mejorar tu macro y que sea más rápida y eficiente y para la pregunta en cuestión supongo que lo que estas buscando es esto:

1
2
3
1. Apagar el parpadeo de pantalla
Lo hacemos con la instrucción: Application.screenupdating=False
Evita los movimientos de pantalla que se producen al seleccionar celdas, hojas y libros

PUNTO - 3

Creo que te has equivocado de rango y no es A7:A14 sino E7:E14 y la forma de hacerlo es programando un poquito.
Cuando le das al botón para escribir tienes que validar que este todos los datos.

Ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
IF Range("E7") = EMPTY Then MsgBox "Falta la Fecha": Exit Sub
o
   IF Range("E7") = "" Then  MsgBox "Falta la Fecha": Exit Sub
o
IF Range("E7") = EMPTY Or _
    Range("E8") = EMPTY Or _
    Range("E9") = EMPTY Or _
    Range("E10") = EMPTY Or _
    Range("E11") = EMPTY Or _
    Range("E12") = EMPTY Or _
    Range("E13") = EMPTY Or _
    Range("E14") = EMPTY Then MsgBox "Falta datos": Exit Sub

PUNTO - 3

En este punto igual que el anterior necesitas un poco de programación básica.

Primero los nombres de las macros son difíciles de leer:

En lugar de: CARGARMOVIMIENTO es mejor: Cargar_Movimiento
En lugar de: VOLVERDECONSULTAGRAL es mejor: Volver_de_Consulta_Gral
En lugar de: IRACARGARCODIGO es mejor: Ir_a_Cargar_Codigo

Por poner unos ejemplos.

Segundo las macros son el resultado de GRABAR MACRO y para mejorar tienes que ponerte a programar. Por ejemplo la macro del modulo12: Sub VOLVERDECONSULTAGRAL() es un claro ejemplo de ello.

Hay 14 modulo y vastantes de ellos están vacíos:

Modulo1 - Vacío
Modulo2 - Vacío
Modulo3 - Varias macros
Modulo4 - Varias macros
Modulo5 - Vacío
Modulo6 - Vacío
Modulo7 - Vacío
Modulo8 - Vacío
Modulo9 - Vacío
Modulo10 - Vacío
Modulo11 - 1 macro: CARGARMOVIMIENTO
Modulo12 - 2 macros: VOLVERDECONSULTAGRAL y IRACARGARCODIGO
Modulo13 - 1 macro: guardarcodigo
Modulo14 - 1 macro: VOLVERDEGENERALAPRINCIPAL

Las macros: VOLVERDECONSULTAGRAL , IRACARGARCODIGO y VOLVERDEGENERALAPRINCIPAL seguramente se pueden simplificar mucho.

Las macros CARGARMOVIMIENTO y guardarcodigo se deberían revisar porque no creo que hagan exactamente lo que quieres, veo muchas referencias absolutas que pueden causar problemas a la larga.

Otro problema con las macros es que algunas solo se desea que se vean y/o se ejecuten teniendo una una determinada hoja activa y esto no veo que este reflejado en las macros.

Para no hacerme muy pesado te comento algunos temas de pasada:

- Usar formularios en lugar de hojas como formulario. (Hojas CARGA, CONSULTA, CARGA CODIGO)
- Hojas visibles y ocultas
- Protección de los datos en la consultas. Por ejemplo las hojas CODIGOS, REGISTROS y CONSULTA GENERAL

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar