You can have a macro pop up that prompts them for a password, and depending on the password given have it unprotect the relevant cells. If you protect the entire sheet first then even if they disable macros they will not be able to enter data in any cells.
the following was a simple bit of code to restrict access to specific sheets, but can be modified easily enough to do cells. Don't miss the bit at the bottom though as you need to hide your code if you don't want them seeing the passwords (Depends on whether you are actually trying to stop them accessing it, or doing something accidentally)
Sub NoPeekingNow()
Dim Ans As String
'Sheet has already been protected with password abcd
ActiveWorkbook.Unprotect ("abcd"

Ans = InputBox("Please input your password"
If Ans = "cdef" Then
Sheets("Sheet1"

.Visible = True
Sheets("Sheet2"

.Visible = True
Sheets("Sheet3"

.Visible = True
Else
If Ans = "ghij" Then
Sheets("Sheet4"

.Visible = True
Sheets("Sheet5"

.Visible = True
Sheets("Sheet6"

.Visible = True
Else: MsgBox ("Try Again, or Stop if you're not supposed to be trying"

End If
End If
ActiveWorkbook.Protect Password:="abcd"
End Sub
You will also need to hide/protect the VBA code, otherwise they could just go into the VBE ands see the passwords. In the VBE go to Tools, then VBA Project Properties, Protection Tab and you can enter a password for the code. I believe though that you have to close the workbook and then reopen it for it to take effect
If more than one person has access to the same file, ie you are not sending it out to them, but they are in fact accessing it on a shared drive, you would probably need to put an even macro in there to rehide the sheets Before Saving or Closing perhaps.
Regards
Ken..............