I just want to get the range from A1:A80 from a sheet called "Children" but I debug it, it gets nothing. Here's my code below:
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.
In the function ResetChild I want to delete all the sheets in my Workbook, that have names equal to the first column of the sheet Children. (A1:A80) So here's my sub below:
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 Sub
Your code should work. How do you know that it returns nothhing? put the row in the end of your code
Debug.Print children.Count
if it returns >0 then all ok and children is the range object with data
Maybe try something like this:
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