¿Evitar que msgbox de alerta se repita?

Tengo un autosuma en excel, introduzco números en la celda B3 y se acumulan en C3, quiero introducir un mensaje de alerta que pregunta si esta seguro de introducir los números en la celda B3, y al momento de elegir si ejecute la macro de autosuma y borre el número escrito, en caso de elegir que no no ejecute la macro y borre el número escrito, ya e logrado que al elegir si se ejecute la autosuma sin problema, y al elegir no, no haga nada, pero si agrego la línea de limpiar el contenido de la celda vuelve a aparecer el mensaje de confirmación, elija si o no, no hace nada, pero es molesto estar viendo el mensaje de alerta después de limpiar el contenido de la celda.

2 respuestas

Respuesta

Ponga un punto de interrupción en la línea de limpiar el contenido, y vaya ejecutando el proceso paso a paso con F8, ahí vera en que momento entra al mensaje, de esa manera podrá corregir el código a manera de que no pase por el mensaje.

Quiero que aparezca el mensaje de Si o No, y ya sea que se ejecute la macro o no, limpie el contenido de la celda donde se introducen los datos que en este caso es B3, anexo el código, podrían explicarme cómo hacer eso, no logro que funcione ya que no soy experto en macros y todo lo que ven es de lo que eh podido encontrar en la red, tal vez las soluciones propuestas funcionen pero no sé cómo aplicarlas :/

Option Explicit

Dim B3C3 As Long
Dim BC3 As Integer


Private Sub Worksheet_Change(ByVal TARGET As Range)


Dim RESP As Byte
If TARGET.Address = "$B$3" Then
RESP = MSGBOX("¿ESTÁN CORRECTOS LOS DATOS?", vbQuestion + vbYesNo, "CONFIRMACIÓN")
If RESP = vbYes Then
MSGBOX "SE ELIGIÓ CONTINUAR", vbExclamation, "CONFIRMACIÓN"
BC3 = BC3 + 1
If BC3 > 1 Then
Exit Sub
End If
B3C3 = B3C3 + Sheets("Hoja1").Range("B3").Value
Sheets("Hoja1").Range("C3").Value = B3C3
End If
Else
If RESP = vbNo Then
MSGBOX "NO SE INTRODUCIRÁN LOS DATOS", vbCritical, "CANCELACIÓN"
End If
End If
End Sub
Private Sub Worksheet_SelectionChange(ByVal TARGET As Range)
B3C3 = 0
BC3 = 0
If TARGET.Address = "$B$3" Then
B3C3 = Sheets("Hoja1").Range("C3").Value
End If
End Sub

Puede subir una copia de su archivo con algunos datos ficticios para correr la macro y ver en donde sale el mensaje que no desea que aparezca, porque con este código no puedo reproducir el proceso y en que momento pasa por la parte donde limpia el contenido de la celda.

Agrego enlace de descarga, en la columna C we introducen los metros, si se elige que si, se muestra dos veces el mensaje de confirmación, y si se elige que no solo se muestra una vez

https://mega.nz/#!HRoz1aDI!SfTJ2pk2LkSYUhubd_mEpWhHVb0BPZcnnhqDIGQR12E 

Ya tengo el archivo, pero no me queda muy claro que es lo que necesita corregir o que no haga y en que momento, podría explicar, o subir imágenes del mensaje donde no quiere que aparezca

Estoy probando otra cosa, tan pronto termine subo enlace de descarga, de igual manera muchas gracias por estar al pendiente

Al introducir números en la columna C, aparece un mensaje, al elegir SI, el número de acumula en la columna D, en sus filas correspondientes, si elige NO, no hace nada, y la columna D permanece sin cambios, lo que me interesa es que ya sea que el usuario elija SI o NO, el número que haya escrito en la columna B se elimine, no puedo subir capturas ya que estoy desde mi celular, pero anexo el archivo, la contraseña es "SKINS", sin comillas.

https://mega.nz/#!mdRUkaqa!qfmBtkYMOpPj87L-luCoMoNszdouQPkJ6RQywunb7UU 

He logrado borrar el contenido de la Columna C cuando elige NO, pero surge un problema que pasa N veces el total de las filas (44 veces) esto representa un problema. Me esta costando un poco entender su código, se puede simplificar el código por algo mucho más pequeño.

Logro entender de acuerdo al archivo, que el usuario unicamente puede escribir en la columna C y lo capturado lo copia a la columna D.

Hay algo más que hace en el archivo, ya que podría simplificar su código si gusta.

Respuesta

Al comenzar el código escribe

Application.EnableEvents = False

y antes de salir del código

Application.EnableEvents = True

Salu2

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas