Excel - no volver a llamar formulario

 
Vista:

no volver a llamar formulario

Publicado por daniel gudiño (1 intervención) el 13/06/2018 22:19:43
hola buenas tardes, tengo un problema con un formulario, este lo llamo con .show al cumplir una condición de valor sobre una celda, pero cuando me paso a la siguiente este me lo sigue llamando, no importa en que celda me posicione, lo que quiero es solo llamar al formulario cuando el valor cumpla la condición en esa celda y después no mostrarlo otra vez. ayuda por favor
les dejo el código que estoy empleando:

lo que hago aqui es que cuando el valor es igual a AREA_BODAS me mande a llamar el formulario que ya tiene un listbox con las opciones "ESC-" Y "ABODA-", y que cuando la celda tenga algún valor de los mencionados ya no se ejecute la llamada al formulario y me deje seguir capturando la informacion.

1
2
3
4
5
6
7
8
9
10
11
12
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("D8") = "AREA_BODAS" Then
Load Form1
Form1.Show
If Range("G8") = "ESC-" Then
If Range("G8") = "ABODA-" Then
Form1.Hide
Unload Form1
End If
End If
End if
End Sub
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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

no volver a llamar formulario

Publicado por Antoni Masana (2478 intervenciones) el 14/06/2018 10:34:11
Primero esta macro se ejecuta siempre que cambias de celda, exactamente al entrar un una nueva celda
Segundo la misma celda ( G8 ) no puede tener dos valores al mismo tiempo. O tiene ESC- o tiene ABODA- pero los dos a la vez no puede ser.

Si quieres que se ejecute cuando se modifique una celda (por ejemplo D8) debes añadir esta condición y cambiar el nombre del procedimiento

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    if Target.Address <> "$D$8" then Exit Sub
 
    If Range("D8") = "AREA_BODAS" Then
        Load Form1
        Form1.Show
        If Range("G8") = "ESC-" Then
            If Range("G8") = "ABODA-" Then
                Form1.Hide
                Unload Form1
            End If
        End If
    End if
End Sub

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