Hi Alasdair,
Try this:
Sub ClearForm(): Dim wc As Worksheet, wt As Worksheet
Dim ACT As String, Per As String, Cls As String
Dim i As Long, j As Long, r As Long, c As Long
Set wc = Worksheets("Cover"): Set wt = Worksheets("Timetable")
For i = 27 To 39 Step 2
ACT = wc.Range("E" & i): Per = wc.Range("C" & i)
If IsError(wc.Range("D" & i)) Then Exit Sub
Cls = wc.Range("D" & i)
If ACT = "0" Then GoTo GetNext
If InStr(1, ACT, "(") Then ACT = Left(ACT, InStr(1, ACT, "(") - 2)
r = wt.Range("A:A").Find(ACT).Row:
c = 1: Do Until wt.Cells(1, c) = Per: c = c + 1: Loop
wt.Cells(r, c) = Cls: wt.Cells(r, c).Font.ColorIndex = 3
GetNext: Next i
With wc
.Range("A11:F24").Copy
.Rows(26).Insert Shift:=xlDown
.Rows("26:39").RowHeight = 42
.Range("A26:F39").Copy: .Range("F26").PasteSpecial _
Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End With
Union(wc.Range("B7:H7"), wc.Range("A3:C3")).ClearContents
End Sub
Bookmarks