Saltar al contenido

Mensaje duplicado en el control de errores


Recommended Posts

publicado

Hola a todos, he puesto un control de errores en un procedimiento y se duplica el mensaje de  error dos veces  y no se porqué lo hace.

El procedimiento es este:

Sub InsertarTabla()
On Error GoTo Etiqueta
Dim nTabla As String
    nTabla = ActiveSheet.ListObjects(1).Name
    ActiveSheet.Range(nTabla & "[#All]").Select
    Selection.Copy
    
Etiqueta:
    If Err.Number = 0 Then
        'Correcto
    ElseIf Err.Number = 9 Then
        'No sé porque repite dos veces el mensaje, si no hay ninguna tabla debe destildar el check
        MsgBox "No hay ninguna tabla, operación cancelada", vbCritical, "Mensaje"
        UserForm1.CheckBox1.Value = False '---> Si comento esto no da error, pero necesito que si se detecta el error el check vuelva a quedar como False
    Else
        MsgBox Err.Number
    End If
End Sub

Adjunto macro.

 

Saludos.

MError.xlsm

publicado
Sub InsertarTabla()
On Error GoTo Etiqueta
Dim nTabla As String
    nTabla = ActiveSheet.ListObjects(1).Name
    ActiveSheet.Range(nTabla & "[#All]").Select
    Selection.Copy
    Exit Sub '<------------------------------------
Etiqueta:
    If Err.Number = 0 Then
        'Correcto
    ElseIf Err.Number = 9 Then
        'No sé porque repite dos veces el mensaje, si no hay ninguna tabla debe destildar el check
        MsgBox "No hay ninguna tabla, operación cancelada", vbCritical, "Mensaje"
        UserForm1.CheckBox1.Value = False '---> Si comento esto no da error, pero necesito que si se detecta el error el check vuelva a quedar como False
    Else
        MsgBox Err.Number
    End If
End Sub

 

publicado
hace 38 minutos , Antoni dijo:
Sub InsertarTabla()
On Error GoTo Etiqueta
Dim nTabla As String
    nTabla = ActiveSheet.ListObjects(1).Name
    ActiveSheet.Range(nTabla & "[#All]").Select
    Selection.Copy
    Exit Sub '<------------------------------------
Etiqueta:
    If Err.Number = 0 Then
        'Correcto
    ElseIf Err.Number = 9 Then
        'No sé porque repite dos veces el mensaje, si no hay ninguna tabla debe destildar el check
        MsgBox "No hay ninguna tabla, operación cancelada", vbCritical, "Mensaje"
        UserForm1.CheckBox1.Value = False '---> Si comento esto no da error, pero necesito que si se detecta el error el check vuelva a quedar como False
    Else
        MsgBox Err.Number
    End If
End Sub

 

Hola Antoni, efectivamente me comí el "Exit Sub" , pero aun así lo repite. 

Inclusive he copiado tú procedimiento y lo pide igual.

¿No debería?

Si se te ocurre algo bien y si no comento la línea y punto.

Gracias como siempre Antoni.

publicado

Esto te ocurre porque estas usando el evento CheckBox1_Click() , prueba por ejemplo con CheckBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) y comenta

publicado

Otra forma de hacerlo con el evento CheckBox1_click() sería :

Public contador As Integer

Private Sub CheckBox1_Click()
    contador = contador + 1
    If contador = 1 Then
        Call InsertarTabla
        contador = 0
    End If
End Sub

 

publicado

¿Porqué no usas?

ActiveSheet.ListObjects(1).Range.Copy

en lugar de

Dim nTabla As String
nTabla = ActiveSheet.ListObjects(1).Name
ActiveSheet.Range(nTabla & "[#All]").Select
Selection.Copy

 

publicado
hace 17 minutos , Antoni dijo:

¿Porqué no usas?

ActiveSheet.ListObjects(1).Range.Copy

en lugar de

Dim nTabla As String
nTabla = ActiveSheet.ListObjects(1).Name
ActiveSheet.Range(nTabla & "[#All]").Select
Selection.Copy

 

Hola @Antoni,  también está genial tú propuesta.

Ahora con la tuya hago un 3 x 1.??

Saludos y gracias a los dos.

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.