Control de errores en VBA
Estoy liado con una macro en la que intento controlar un error.
Te comento, utilizo la función Do para que mi macro se repita hasta que encuentre una celda vacía, ahí se detiene, en medio de la función do esta mi código que es crear una hoja por cada nombre que encuentra en la columna B y que claro va avanzando en filas con Do.
Aquí viene el control de errores: La macro me genera un error si la hoja no esta creada, entonces en lugar de que me bote el error, lo controlo y mando a crear una nueva hoja con el nombre que el tocaba, hasta aquí aparentemente todo va bien.
Pero resulta que cuando corre por segunda vez "Do" ya no me considera el control del error, entonces cuando el archivo no encuentra el nombre se cae la macro y me bota el error en lugar de pasarlo.
Espero haber sido claro, te paso mi código para que me digas en que me equivoco
Sub Crea()
Dim Comprobar, Contador
Comprobar = True: Contador = 0 ' Inicializa variables.
Do ' Bucle externo.
a = 1
Do While a < 65000 ' Bucle interno.
a = a + 1 ' Incrementa el contador.
If Range("B" & a).Value = "" Then ' Si la condición es verdadera.
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
Else
On Error GoTo kike
b = Range("B" & a).Value
Rows(a).Select
Selection.Copy
Sheets(b).Select
k = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Range("A" & k).Select
ActiveSheet.Paste
Sheets("Base").Select
Application.CutCopyMode = False
End If
kike:
If Err.Number = 9 Then
Sheets("Base").Select
Sheets.Add
ActiveSheet.Name = b
Sheets("Base").Select
Rows("1:1").Select
Selection.Copy
Sheets(b).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Base").Select
Range("A1").Select
a = a - 1
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente
End Sub
Te comento, utilizo la función Do para que mi macro se repita hasta que encuentre una celda vacía, ahí se detiene, en medio de la función do esta mi código que es crear una hoja por cada nombre que encuentra en la columna B y que claro va avanzando en filas con Do.
Aquí viene el control de errores: La macro me genera un error si la hoja no esta creada, entonces en lugar de que me bote el error, lo controlo y mando a crear una nueva hoja con el nombre que el tocaba, hasta aquí aparentemente todo va bien.
Pero resulta que cuando corre por segunda vez "Do" ya no me considera el control del error, entonces cuando el archivo no encuentra el nombre se cae la macro y me bota el error en lugar de pasarlo.
Espero haber sido claro, te paso mi código para que me digas en que me equivoco
Sub Crea()
Dim Comprobar, Contador
Comprobar = True: Contador = 0 ' Inicializa variables.
Do ' Bucle externo.
a = 1
Do While a < 65000 ' Bucle interno.
a = a + 1 ' Incrementa el contador.
If Range("B" & a).Value = "" Then ' Si la condición es verdadera.
Comprobar = False ' Establece el valor a False.
Exit Do ' Sale del bucle interno.
Else
On Error GoTo kike
b = Range("B" & a).Value
Rows(a).Select
Selection.Copy
Sheets(b).Select
k = Range("A" & Cells.Rows.Count).End(xlUp).Row + 1
Range("A" & k).Select
ActiveSheet.Paste
Sheets("Base").Select
Application.CutCopyMode = False
End If
kike:
If Err.Number = 9 Then
Sheets("Base").Select
Sheets.Add
ActiveSheet.Name = b
Sheets("Base").Select
Rows("1:1").Select
Selection.Copy
Sheets(b).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Sheets("Base").Select
Range("A1").Select
a = a - 1
End If
Loop
Loop Until Comprobar = False ' Sale inmediatamente
End Sub
2 respuestas
Respuesta de Elsa Matilde
1
Respuesta de Eduard Caballero
1