Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Mensaje duplicado en el control de errores

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

Featured Replies

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
  • Autor
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

Editado el por JSDJSD

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
hace 3 minutos , Benito Bartolomé dijo:

Hola @JSDJSD había visto el primero y no iba.

Para que funcione tientes que pulsar enter

publicado
  • Autor
Ahora mismo, JSDJSD dijo:

Marcas y depués pulsas enter

Gracias @JSDJSD por esta segunda opción, pulsando el Enter funciona correctamente.

Doblemente agradecido. Saludos

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
  • Autor
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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.