Take out the Dim line, refer to Linked cell as a named range, not as a
variable, ensure both the chackbox and cell A3 are not locked, leaving
something like:
Private Sub CheckBox1_Click()
If Range("LinkedCell") Then
Call Protect
Else
Call Unprotect
End If
End Sub
But why don't you do away with A3 altogether and just examine the
checkbox's value?:
Private Sub CheckBox1_Click()
If ActiveSheet.CheckBox1.Value Then
Call Protect
Else
Call Unprotect
End If
End Sub