الاخ يوسف اسمح لي بالمساعده 
يجب ان يكون هناك عنوان واحد للحدث و بعد كتابة الكود الاول و قبل كتابة عبارة end sub اضف الكود الثاني بدون عنوان ثم انهي الحدث بالعبارة End sub  كما هو مبين اسفل 
ارجو ان تكون مساهمتي فعاله 
تحياتي 
Private Sub Workbook_SheetSelectionchange(ByVal Sh As Object, ByVal Target As Range) 
If Target.HasFormula Then 
ActiveSheet.Protect 
Else 
ActiveSheet.Unprotect 
End If 
Selection.NumberFormat = "[=0]0;[>99]0;#.#" 
End Sub