A very simple way of doing this is with conditional formatting and VBA.
Just add this to your ThisWorkbook code:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
If Application.CutCopyMode = False Then
Application.Calculate
End If
End Sub
and run the following code only once, to create the conditional format rules:
Sub CreateConditionalFormats()
Dim y As FormatCondition
For Each ws In ThisWorkbook.Worksheets
DoEvents
'Optionally delete any existing conditional formats
'ws.Cells.FormatConditions.Delete
' Selection highlight
Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=AND(ROW()=CELL(""row""), COLUMN()=CELL(""col""))")
With y.Borders(xlTop)
.LineStyle = xlSolid
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
With y.Borders(xlBottom)
.LineStyle = xlSolid
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
With y.Borders(xlLeft)
.LineStyle = xlSolid
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
With y.Borders(xlRight)
.LineStyle = xlSolid
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
y.StopIfTrue = False
y.SetFirstPriority
' Row highlight
Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=ROW()=CELL(""row"")")
With y.Borders(xlTop)
.LineStyle = xlDash
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
With y.Borders(xlBottom)
.LineStyle = xlDash
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
y.StopIfTrue = False
' Column highlight
Set y = ws.Cells.FormatConditions.Add(Type:=xlExpression, Formula1:="=COLUMN()=CELL(""col"")")
With y.Borders(xlLeft)
.LineStyle = xlDash
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
With y.Borders(xlRight)
.LineStyle = xlDash
.Color = -16776961
.TintAndShade = 0
.Weight = xlThin
End With
y.StopIfTrue = False
Next
End Sub
@CGTheLegend: The alternative solutions offered cost money or are temporary macros which AFAIK do not work across multiple files. – glenneroo – 2017-10-25T12:24:55.597