Excel - Macro para excel que evite salir de una celda si no se han metido datos en ésta.

 
Vista:
sin imagen de perfil

Macro para excel que evite salir de una celda si no se han metido datos en ésta.

Publicado por José (26 intervenciones) el 09/02/2018 16:07:08
Hola a todos: Alguien me podría ayudar con una macro de excel que al pulsar enter en una celda para salir de ella no lo permita si en ésta no se han metido datos.

Saludos y gracias de antemano
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
Imágen de perfil de Ignacio
Val: 639
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para excel que evite salir de una celda si no se han metido datos en ésta.

Publicado por Ignacio (205 intervenciones) el 09/02/2018 18:14:50
Hola:

En una celda en particular o en un rango?

Saludos
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
sin imagen de perfil

Macro para excel que evite salir de una celda si no se han metido datos en ésta.

Publicado por José (26 intervenciones) el 09/02/2018 19:02:43
Son celdas separadas ... Si me dejas tu correo te paso un archivo ejemplo... Mi correo es [email protected]

Un saludo y gracias de antemano
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 Ignacio
Val: 639
Bronce
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Macro para excel que evite salir de una celda si no se han metido datos en ésta.

Publicado por Ignacio (205 intervenciones) el 09/02/2018 20:22:24
Checa el adjunto a ver si es algo parecido a lo que necesitas..

Saludos.
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
sin imagen de perfil

Macro para excel que evite salir de una celda si no se han metido datos en ésta.

Publicado por José (26 intervenciones) el 10/02/2018 07:58:08
Buenos Días:

He probado la macro y tengo el siguiente problema. Al abrir la hoja me obliga a ir directamente a las celdas obligatorias. El problema es que en la hoja hay otras celdas que no son obligatorias y esta macro no permite pasar antes por éstas obligándome a ir primero a las obligatorias. Lo que yo quiero es que al abrir la hoja pueda rellenar las celdas en este orden por ejemplo;

2 celdas no obligatorias;
1 obligatoria,
1 no obligatoria,
1 obligatoria etc.

Si me dices tú correo te envío un ejemplo.

Gracias y Saludos de José Segura López

No te puedo adjuntar el archivo ejemplo desde esta web pues por el momento mi cuenta no me lo permite he intentado solucionarlo pero no lo consigo.
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

Macro para excel que evite salir de una celda si no se han metido datos en ésta.

Publicado por Antoni Masana (2463 intervenciones) el 12/02/2018 06:31:57
Contestado por correo.

Adjunto la respuesta por si le puede interesar a alguien

El problema del Excel es que no hay un evento que se ejecute al salir de una celda sin modificar el contenido por eso hay que usar el ingenio y utilizar las herramientas que tenemos.

Me ha costado hacerlo. He estado todo el día pensando. bueno en realidad no tenía ni idea y he dejado de pensar para que las ideas fluyeran y al final ha salido.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Celda_Anterior As String
 
Private Sub Worksheet_Activate()
    Range("B2").Select
    Celda_Anterior = ""
End Sub
 
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Celda_Anterior = "" Then
       If Target.Address = "$D$2" Then Celda_Anterior = "$D$2"
       If Target.Address = "$F$2" Then Celda_Anterior = "$F$2"
    Else
       If Range(Celda_Anterior).Value = Empty Then
          Range(Celda_Anterior).Select
       Else
          Celda_Anterior = ""
          If Target.Address = "$D$2" Then Celda = "$D$2"
          If Target.Address = "$F$2" Then Celda = "$F$2"
       End If
    End If
End Sub

Te cuento como funciona: tengo una variable Celda_Anterior que cuando entras en la hoja esta vacía y el cursor se coloca en la celda B2.

Cuando cambias de posición al entrar en una celda siempre ejecuta el evento Worksheet_SelectionChange. Si la variable Celda_Anterior está vacía mira si la nueva celda es D2 o F2 y lo guarda en la variable.

Cuando vuelve a cambiar de celda después de pasar por una de las obligatorias vuelve a ella hasta que tenga datos.

Cuando ya tiene datos vacía la variable y vuelve a verificar el destino, por si salta de la D2 a la F2 o viceversa.


Saludos..
\\//_
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