Bottom line = matter of personal style and a judgement call
Absolutely.
The way I understand it, there is a pair of columns for each month. Col P-Q is the pair for April 2021 with 9 months left in 2021
That makes more sense. I have yet to look at the OP's attachment, so I have been missing a lot.
Going with the premise that a User will not be changing Columns out of date and for more robustness
If Not Intersect(Target, ThisMonthsColumns) is Nothing Then...
Private Function ThisMonthsColumns() As Variant
Set Found = Find Todays month
Set ThisMonthsColumns to Range(Found.Offset(, -2)Resize(1, 4).EntireColumn.Address) 'Include previous month
Which (different) Procedure to run should be determinable by
If CBool(Target.Column Mod 2) Then... Else...