You CAN do it with formulas!
Jump to the bottom for the 1 cell formula, or if you want the story of discovery:
A1 = IF(ISBLANK(C1),"",B1)
B1 = IF(A1="",NOW(),A1)
C1 = The cell to be evaluated
Now go to Tools>Options>Calculation and turn on iteration (worked with the default 100 / 0.001 an 1 / 0.001)
With C1 blank:
A1 is blank
B1 will change to the current time at each calculation.
When a value is entered in C1:
A1 takes the value of B1 and then never changes. (Not even with workbook save/close/open)
CAVEAT: If the worksheet is in automatic mode, then B1 will change to the date/time when opened or closed. However, if you don't do anything that causes a recalculation before you enter a value in C1, then you will get the date/time of the LAST CALCULATION, not the CURRENT time!
This is solved by switching the cells. I presume that Excel generally calculates in some order cell(1,1) then (1,2) ... (2,1) but I don't know how to test that.
A1 = IF(B1="",NOW(),B1)
B1 = IF(ISBLANK(C1),"",A1)
C1 = The cell to be evaluated
Now it shows the Date/time that C1 was entered!!!
I tried combining it into one cell:
=IF(A1="",NOW(),IF(ISBLANK(C1),"",A1))
But then it only works when C1 is first entered. If C1 is cleared, then the date stays. Also, need to set at least 2 iterations to get the current time when C1 is entered.
GOT IT IN ONE FORMULA!
A1 =IF(AND(A1="",NOT(ISBLANK(C1))),NOW(),IF(ISBLANK(C1),"",A1))
{works with 1 or more iterations)

Thanks for the challenge!
I have always used macros when I needed this.