Ayuda con macro

Buenas tardes serian tan amable de ayudarme con una inquietud que tengo como puedo colocar un msg box que logre salir cuando en input box no coloque el nombre del libro correcto en vez del error "se ha producido el error '9' en tiempo de ejecución: subdice fuera del intervalo
Sub cmbCopiar()
Dim a As String
Dim d As String
a = InputBox("Nombre del Archivo: ", "MiArchivo")
d = a
If d = "" Then
Else
Workbooks(a).Sheets("Mana_Infantil").Activate
Selection.Copy
Workbooks("libro1.xlsm").Sheets("Mana_Infantil").Activate
ActiveSheet.Range("a2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.Dialogs(xlDialogSaveAs).Show
End If
End Sub
Gracias

2 Respuestas

Respuesta
1
Esto debería corregir el error
Sub cmbCopiar()
On Error GoTo Indice
Dim a As String
Dim d As String
a = InputBox("Nombre del Archivo: ", "MiArchivo")
d = a
If d = "" Then
Else
Workbooks(a).Sheets("Mana_Infantil").Activate
Selection.Copy
Workbooks("libro1.xlsm").Sheets("Mana_Infantil").Activate
ActiveSheet.Range("a2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Application.Dialogs(xlDialogSaveAs).Show
End If
Indice:
If Err.Number <> 0 Then
MsgBox "El archivo no fue encontrado"
End If
End Sub
Respuesta
1
La manera más fácil de hacer esto es untilizando On Error, te quedaría algo como esto:
Sub cmbCopiar()
Dim a As String
Dim d As String
    a = InputBox("Nombre del Archivo: ", "MiArchivo")
    d = a
    If d = "" Then
    Else
        On Error GoTo ControlError  ' Activa la rutina de control de errores.
        Workbooks(a).Sheets("Mana_Infantil").Activate
        Selection.Copy
        Workbooks("libro1.xlsm").Sheets("Mana_Infantil").Activate
        ActiveSheet.Range("a2").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
        Application.Dialogs(xlDialogSaveAs).Show
        On Error GoTo 0 ' Desactiva la detección de errores.
    End If
    Exit Sub    ' Salir para evitar el controlador.
ControlError:   ' Rutina de control de errores.
    MsgBox "Error en la lectura de datos"
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas