Excel - VENTANA POP-UP SEGUN DATOS EN CELDA

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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 23/03/2022 09:52:05
Buenos días,

Estoy programando una macro para que cuando haya una palabra en una celda aparezca un cuadro de díalogo con un mensaje. Sin embargo algo debe de fallar en mi código pues no sale ninguna ventana.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("A1:A10"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value = "OK" Then
                MsgBox "NO HAY ERRORES " & xCell.Address, vbInformation, "Ningún error detectado"
                Exit Sub
            End If
        Next
    End If
End Sub

Qué es lo que falla en este código para que no funcione? Existe alguna otra opción?

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 Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 23/03/2022 15:29:15
No se que es lo que quieres hacer pero te cuento que es lo que hace la macro.

La macro se ejecuta cuando se modifica una celda en la columna A entre las filas 1 al 10 ambas incluidas.
A parte de hacer un FOR que veo innecesario, el Pop-Up sale SOLO si el contenido es un OK en mayúsculas.
Si la celda tiene "Ok" o "ok" o "MOKA" o "El resultado es OK" no muestra el Pop-Up.

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("A1:A10"))
    If Not Rg Is Nothing Then
        For Each xCell In Rg
            If xCell.Value = "OK" Then
                MsgBox "NO HAY ERRORES " & xCell.Address, vbInformation, "Ningún error detectado"
                Exit Sub
            End If
        Next
    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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 23/03/2022 16:29:59
Buenas,

Quisiera que si, en una fila, cada vez que hay un OK me salga una pop-up.

el FOR es para que se ejecute en cada celda que haya un OK.

El problema es que, aunque escriba el OK en mayúsculas, no sale ninguna pop-up.

He problado on con otro código más sencillo que me funciona aunque tenga que escribir una línea pour fila:

1
2
3
4
5
6
7
8
9
10
Private Sub popup()
 
If Range("A1") = "OK" Then MsgBox "NINGUN ERROR DETECTADO (A1)"
If Range("A2") = "OK" Then MsgBox "NINGUN ERROR DETECTADO (A2)"
If Range("A3") = "OK" Then MsgBox "NINGUN ERROR DETECTADO (A3)"
If Range("A4") = "OK" Then MsgBox "NINGUN ERROR DETECTADO (A4)"
 (ETC)
 
 
End Sub

Este código me funciona. ¿qué opina?

Gracias.

Patrick.
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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 23/03/2022 18:19:35
Este código FUNCIONA perfectamente. Ahora bien bien que realice o haga lo que quieres que haga ya es otro cantar.

1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim xCell As Range, Rg As Range
    On Error Resume Next
    Set Rg = Application.Intersect(Target, Range("A1:A10"))
    If Not Rg Is Nothing Then
        If Rg = "OK" Then
            MsgBox "NO HAY ERRORES " & Rg, vbInformation, "Ningún error detectado"
        End If
    End If
End Sub

Esto hace exactamente lo mismo:

1
2
3
4
5
6
7
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row <= 10 Then
        If Target.Text = "OK" Then
            MsgBox "NO HAY ERRORES OK", vbInformation, "Ningún error detectado"
        End If
    End If
End Sub

Para hacer lo que dices en el ultimo post se puede hacer esto:

1
2
3
4
5
6
7
8
9
10
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fila As Byte
    If Target.Column = 1 And Target.Row <= 10 Then
        For Fila = 1 To 10
            If Cells(Fila, "A") = "OK" Then
                MsgBox "NO HAY ERRORES (A" & Fila & ")", vbInformation, "Ningún error detectado"
            End If
        Next
    End If
End Sub

O esta otra con un solo Pop-Up

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fila As Byte, Texto As String
    If Target.Column = 1 And Target.Row <= 10 Then
        For Fila = 1 To 10
            If Cells(Fila, "A") = "OK" Then
                Texto = Texto + "NO HAY ERRORES (A" & Fila & ")" & vbLf
            End If
        Next
    End If
    If Len(Texto) > 0 Then
        MsgBox Texto, vbInformation, "Ningún error detectado"
    End If
End Sub

Y sobre todo, sobre todo este código tiene que estar en la hoja NO en un módulo.

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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 24/03/2022 16:51:17
Hola Antoni,

Gracias por estas respuestas. Una pregunta, si Excel está en un idioma diferente al castellano, siguen funcionando estas líneas de VBA?

Por ejemple, "Fila" podría ser "File" y "Texto" -> "text" si Excel está en inglés?

Muy amable.
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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 24/03/2022 17:33:43
El nombre de las variables las puedes escribir en el idioma que quieras.
No tiene que ver en que idioma esta el Excel.

Para escribir las fórmulas en las celdas si que debes tener en cuenta el idioma si lo haces a mano, si lo haces desde una macro (VBA) la formula siempre es en Ingles.

Internamente las guarda en ingles y el mismo libro veras la formula en diferente idioma según este el Excel en Ingles, Español, Frances, Aleman, etc. pero en la macro (VBA) siempre se escribe la formula que se pone en la celda en ingles.

En las macros (VBA) independientemente de en que idioma este el Excel las instrucciones siempre son en ingles: While, Right, Left, Len, If, Then, Else, For, etc. , etc.

Como si es un idioma inventado.

Esto es tan valido como el del ejemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Fila_Row_Line_Ligne_Riga_Eihe As Byte, Texto_Text_Texte_Testo_Wortlaut As String
    If Target.Column = 1 And Target.Row <= 10 Then
        For Fila_Row_Line_Ligne_Riga_Eihe = 1 To 10
            If Cells(Fila_Row_Line_Ligne_Riga_Eihe, "A") = "OK" Then
                Texto_Text_Texte_Testo_Wortlaut = Texto_Text_Texte_Testo_Wortlaut + "NO HAY ERRORES (A" & Fila_Row_Line_Ligne_Riga_Eihe & ")" & vbLf
            End If
        Next
    End If
    If Len(Texto_Text_Texte_Testo_Wortlaut) > 0 Then
        MsgBox Texto_Text_Texte_Testo_Wortlaut, vbInformation, "Ningún error detectado"
    End If
End Sub

O nombres simple con una o dos letras:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Byte, B As String
    If Target.Column = 1 And Target.Row <= 10 Then
        For A = 1 To 10
            If Cells(A, "A") = "OK" Then
                B = B + "NO HAY ERRORES (A" & A & ")" & vbLf
            End If
        Next
    End If
    If Len(B) > 0 Then
        MsgBox B, vbInformation, "Ningún error detectado"
    End If
End Sub

Como si lo quieres poner en Klingon:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim roQ As Byte, wej As String
    If Target.Column = 1 And Target.Row <= 10 Then
        For roQ = 1 To 10
            If Cells(roQ, "A") = "OK" Then
                wej = wej + "NO HAY ERRORES (A" & roQ & ")" & vbLf
            End If
        Next
    End If
    If Len(wej) > 0 Then
        MsgBox wej, vbInformation, "Ningún error detectado"
    End If
End Sub

La finalidad del nombre de las variables es para saber que haces y depende de quien lo escribe y quien lo lee, al ordenador tanto de la si pones Fila o Patata.

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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 01/04/2022 15:38:25
Estimado Antoni, gracias por estos comentarios.

No entiendo por qué pero no me sale la pop-up. Así que he optado pour el código siguiente:

1
If Range("J70") = "Error artículo escaneado" Then MsgBox "Cuidado, el artículo escaneado en J70 es incorrecto", vbExclamation

Esto hace que nada más introducir el artículo, si éste es erróneo, salta una pop-up.

Bien, funciona y es lo que buscaba.

Ahora, en esa misma columna J si aparece dos veces el mismo artículo, quisiera una pop-up que me diga que este artículo ya se encuentra en la lista. Tengo este código pero ninguna pop-up aparece...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim Lg%, x%
Lg = Range("J65536").End(xlUp).Row
    If Not Application.Intersect(Target, Range("j8:j" & Lg)) Is Nothing Then
            If Application.CountIf(Range("j:j"), Target) > 1 Then
                    x = Application.Match(Target, Range("j:j"), 0)
                If x = Target.Row Then
                    x = Application.Match(Target, Range(Target.Offset(1, 0), Cells(Lg, 1)), 0) + Target.Row
                End If
                    MsgBox ("Este artículo ya ha sido escaneado !" & Chr(10) & "ligne " & x)
                    'Cells(x, 1).Select
                    Target.ClearContents
                    Exit Sub
            End If
    End If
End Sub

¿por qué razón no aparece la pop-up? ¿qué es lo que falla en este código?

Muchas gracias de antemano pour su respuesta.

Atentamente,

Patrick.
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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 01/04/2022 19:56:53
Supongo que en la línea 4 verificas que estas en la columna en la que tiene que hacer la verificación.
Enviame un libro con datos explicando que haces para activar la macro y que se supone que debe hacer la misma y le doy un vistazo.

Sin ver los datos y probar la macro no se que puede estar fallando.

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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 04/04/2022 07:10:03
Buenos días Antoni,

Voy a preparar el libro para enviarselo pues está con los logotipo de la empresa y obviamente tengo que quitarlos.

Vuelvo a mi mensaje acerca de nombrar las filas el cual Usted me contestó. Quisiera dar formato a mi código con su respuesta pero no funciona:

1
If Target.Name.Name = "SCAN1" = "Error artículo escaneado" Then MsgBox "Cuidado, el artículo escaneado en J70 es incorrecto", vbExclamation

Pero no funciona :-)

¿qué es lo que está mal?
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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 05/04/2022 21:20:11
Este IF esta mal

1
If Target.Name.Name = "SCAN1" = "Error artículo escaneado" Then MsgBox "Cuidado, el artículo escaneado en J70 es incorrecto", vbExclamation

Creo que lo que quieres hacer es esto:

1
2
3
If Target.Name.Name = "SCAN1"  And Target.Text = "Error artículo escaneado" Then
    MsgBox "Cuidado, el artículo escaneado en J70 es incorrecto", vbExclamation
End If

Puede que la segunda condición de error el alguna celda y lo mejor es asi:

1
2
3
4
5
If Target.Name.Name = "SCAN1"  Then
    If Target.Text = "Error artículo escaneado" Then
        MsgBox "Cuidado, el artículo escaneado en J70 es incorrecto", vbExclamation
    End If
End If

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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 06/04/2022 16:36:45
Esto es perfecto Andoni. Mil gracias pour su ayuda.

Tengo a puntito el archivo con macros que he desarrollado y las que Usted me ha corregido. Ojalá pudiera agradecérselo de alguna manera.

Para terminar por completo mi archivo, me queda un botón. No sé si es posible pues no encuentro nada al restpecto ni en castellano, ni en francés ni en inglés..... Sin embargo es sencillo:

Rango B, cualquier celda que contenga OUT (puede ser OUT-18 o OUT156451) necesito que se borre el contenido. Si solo es "OUT" sé hacerlo mediante :

Sub borrarOUT()

1
2
3
4
5
6
Dim Celda As Range
For Each Celda In Range("b:b")
If (Celda.Value = "OUT") Then Celda.ClearContents
Next Celda
 
End Sub

Esto solo borra la celda que solo tiene OUT pero yo quiero que sea si CONTIENE la palabra OUT. ¿Es esto posible?

Gracias de antemano.

Buenas tardes.
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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 06/04/2022 18:51:16
Esto lo hace:

1
2
3
4
Dim Celda As Range
For Each Celda In Range("b:b")
    If InStr(Celda.Value, "OUT") > 0 Then Celda.ClearContents
Next Celda

Definición de InStr:
Devuelve un entero que especifica la posición inicial de la primera aparición de una cadena dentro de otra. El entero es un índice basado en uno, si se encuentra una coincidencia. Si no se encuentra ninguna coincidencia, la función devuelve cero.

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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 07/04/2022 15:50:49
Es perfecto Antoni.

De verdad, me gustaria agradecerle su ayuda de alguna manera. No dude en mandarme un mail a [email protected] y asi podré hacer llegar un detalle.

Tengo una ultima duda pero no quisiera abusar de su amabilidad. Probaré a buscar en otros foros :D

Mil gracias.

Patrick.
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

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Antoni Masana (2477 intervenciones) el 07/04/2022 18:05:04
No abusa de mi amabilidad.
Puede consultar las dudas que tenga que si la respuesta se lo contare.
Mi correo es [email protected]

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
Imágen de perfil de Patrick
Val: 43
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

VENTANA POP-UP SEGUN DATOS EN CELDA

Publicado por Patrick (66 intervenciones) el 08/04/2022 15:05:02
Buenas tardes Antoni,

le he respondido a su correo que me ha indicado.

Muchas gracias.

PAtrick.
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