EDIT: I've pasted some revised code below in the Sub(Copyinternal) section. Still doesn't work but maybe I'm on the right track?
I have a workbook with 6 tabs. Sheets are set up as follows:
- Controls
- Forecast
- Financial Update
- Board Goals
- Internal Calendar
- External Calendar
Sheets 2-4 contain data tables that I would like to filter in two different ways and copy/paste to both tabs 5 & 6 without overwriting. Sheets 5 & 6 have headers in row 1 that I would like to maintain.
Trying to:
- First delete any existing information in "Internal Calendar" sheet and "External Calendar" sheet from Row 2 down without deleting the headers.
- In "Forecast" sheet, filter column H on selections "Both" and "Internal" in and then copy/paste that information into "Internal Calendar" sheet starting in column C. I'm then trying to do the same for "Financial Update" and "Board Goals" sheets, but Copy/Pasting the filtered information after the content that's already been pasted into "Internal Calendar", as to not overwrite information.
- Repeat step 2 except Filter H on "Both" and "External" and Copy/Paste the filtered info into "External Calendar" starting in column C.
- Controls sheet can be ignored.
Loop begins to run correctly only if I run the macro while my active sheet is "Forecast", but then it stops after pasting that data and doesn't move onto the following two sheets. I'm also not entirely sure the existing code I have will identify the first empty row to append data to in the destination sheets.
I'm pretty new to using VBA, so a guide in the right direction would be very appreciated.
Sub CalendarAutomation()
    ClearSheets
    CopyInternal
    CopyExternal
End Sub
Sub ClearSheets()
    'Clear out Contents
    Sheets("Internal Calendar").Select
    activesheet.Range("C2:G250").Select
    Selection.ClearContents
    Sheets("External Calendar").Select
    Range("C2:G250").Select
    Selection.ClearContents
End Sub
Sub CopyInternal()
Dim ws As Variant
Dim starting_ws As Worksheet
Dim ending_ws As Worksheet
Dim rng As range
Set starting_ws = ThisWorkbook.Worksheets("Forecast")
Set ending_ws = ThisWorkbook.Worksheets("Internal Calendar")
Set rng = ActiveRange
For ws = 2 To 4
    If Selection.AutoFilter = OFF Then Selection.AutoFilter
    ws.rng.AutoFilter Field:=6, Criteria1:="=Both", _
        Operator:=xlOr, Criteria2:="=Internal"
    UsedRange.Copy
    ending_ws.range(Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row).Paste
Next ws
End Sub
Sub CopyExternal()
Dim ws As Worksheet
Dim unusedRow As Long
    For Each ws In ThisWorkbook.Worksheets
    If Not ws.Name = "Controls" _
    And Not ws.Name = "Internal Calendar" _
    And Not ws.Name = "External Calendar" Then
    Range("$C$3:$H$14").AutoFilter Field:=6, Criteria1:="=Both", _
        Operator:=xlOr, Criteria2:="=External"
    Range("C4:G14").Select
    Selection.Copy
    Sheets("External Calendar").Select
    activesheet.Paste
    unusedRow = Cells.SpecialCells(xlCellTypeLastCell).Offset(1, 0).Row
    End If
Next ws
End Sub
 
    