Solo quiero obtener el rango de A1: A80 de una hoja llamada "Niños", pero lo depuré, no obtiene nada. Aquí está mi código a continuación:
Dim wks2 As Worksheet Dim children As Range Worksheets("Children").Activate Set wks2 = Worksheets("Children") Set children = wks2.Range("A1:A80") ResetChild (children) //The sub that I want to call. Explanation bellow.En la función ResetChild, quiero eliminar todas las hojas de mi Workbook, que tienen nombres iguales a la primera columna de la hoja Children. (A1: A80) Así que aquí está mi sub a continuación:
Sub ResetChild(children As Range) Call DisableCalculations Dim cell As Range For Each cell In children Set childrenSheet = Worksheets(cell.Value) If (DoesSheetExist(childrenSheet)) Then Application.DisplayAlerts = False Sheets(childrenSheet).Delete Application.DisplayAlerts = True End If End SubTu código debería funcionar. ¿Cómo sabes que no devuelve nada? pon la fila al final de tu código
Debug.Print children.Countsi devuelve> 0, entonces todo está bien y los niños son el objeto de rango con datos
Tal vez intente algo como esto:
Sub DeleteChildren() Dim children As Range Dim oChildSheet As Worksheet Dim vChildName Set children = ThisWorkbook.Worksheets("Children").Range("A1:A80") For Each vChildName In children Set oChildSheet = GetChildSheet(CStr(vChildName)) If Not oChildSheet Is Nothing Then Application.DisplayAlerts = False Call oChildSheet.Delete Application.DisplayAlerts = True End If Next vChildName End Sub Function GetChildSheet(sChildName As String) As Worksheet On Error GoTo errHandler Set GetChildSheet = ThisWorkbook.Worksheets(sChildName) Exit Function errHandler: Debug.Print "Child sheet not found: " & sChildName End Function