I have a sheet which has VBA to unhide columns as and when needed which act as a calendar, this is shared between 20-30 users mostly using 2013 (a few may still be using 2010), however I am periodically getting the message this files is corrupt and cannot be repaired by excel. I suspect it may be a combination of a slow (internal) network and the file being shared but am out of my depth on this. I cannot run the repair option from within excel as it just crashes excel (stops working message). I have reproduced the code below to see if there is anyone who may be able to shed light on it. I can always recover to previous version but lose the last day or so entries.

Sub HideRight()
Dim i As Long
Dim LC As Long 'last column
Dim FC As Long 'first visible column

Application.ScreenUpdating = True
FC = 3
LC = Cells(3, Columns.Count).End(xlToLeft).Column
Do While FC > 2 And FC < LC
If ActiveSheet.Columns(FC).Hidden = False Then Exit Do
FC = FC + 1
Loop
For i = FC To LC
If ActiveSheet.Columns(i).Hidden = True Then
ActiveSheet.Columns(i - 1).Hidden = True
Exit For
End If
If i = LC Then ActiveSheet.Columns(i).Hidden = True
Next i
Application.ScreenUpdating = False
End Sub

Sub UnhideRight()
Dim i As Long
Dim LC As Long 'last column

Application.ScreenUpdating = True
LC = Cells(3, Columns.Count).End(xlToLeft).Column
For i = LC To 3 Step -1
If ActiveSheet.Columns(i + 1).Hidden = True Then
ActiveSheet.Columns(i + 1).Hidden = False
Exit For
End If
Next i
Application.ScreenUpdating = False
End Sub

Sub HideLeft()
Dim LC As Long 'last column
Dim FC As Long 'first visible column

Application.ScreenUpdating = True
FC = 3
LC = Cells(3, Columns.Count).End(xlToLeft).Column
Do While FC > 2 And FC < LC
If ActiveSheet.Columns(FC).Hidden = False Then Exit Do
FC = FC + 1
Loop
ActiveSheet.Columns(FC).Hidden = True
Application.ScreenUpdating = False
End Sub

Sub UnhideLeft()
Dim LC As Long 'last column
Dim FC As Long 'first visible column

Application.ScreenUpdating = True
FC = 3
LC = Cells(3, Columns.Count).End(xlToLeft).Column
Do While FC > 2 And FC < LC
If ActiveSheet.Columns(FC).Hidden = False Then Exit Do
FC = FC + 1
Loop
If ActiveSheet.Columns(FC - 1).Hidden = True Then ActiveSheet.Columns(FC - 1).Hidden = False
Application.ScreenUpdating = False
End Sub