My first read shows to change these subs
Private Sub Workbook_Activate()
ActiveSheet.Range("A1").Select
Application.CellDragAndDrop = False
End Sub
Private Sub Workbook_Open()
ActiveSheet.Range("A1").Select
Application.CellDragAndDrop = False
End Sub
It is Very, Very dangerous to use Sheet.Index. It is equally dangerous to use Sheets(OneIndexNumber). Only if you are looping thru all sheets in a workbook should you use Sheets(i).
Here is how I would do this sub.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim ShtName As String
ShtName = Sh.Name
Dim Col As Long
Col = Target.Column
'For certain columns on certain sheets, change Macro name
If ShtName = "Sheet2" And Col = 15 Then Application.Run ("fecha_hoy")
If ShtName = "Sheet3" And (Col = 3 Or Col = 13) Then Application.Run ("fecha_hoy")