Si no recuerdo mal, el propio excel tiene opciones para bloquear Celdas, accediendo desde el formato de Celda.
Para ello debes proteger la hoja completa y luego desbloquear todas las celdas excepto las que quieras bloquear.
Se trata de ver cómo loquear y desbloquear celdas desde Excel (formato) y cómo bloquear la hoja (método
Protect).
Tal vez este código te pueda servir de ayuda.
Código Delphi
[-]
var
R1 : TOpExcelRange;
begin
....
R1 := WS.Ranges.Add;
R1.Address := 'A1';
if CheckBox1.Checked then begin
R1.AsRange.Locked := False; we can still edit it
WS.AsWorksheet.Protect(EmptyParam, True, True, True, True, 0);
ShowMessage('Worksheet protected...');
end else begin
R1.AsRange.Locked := True; locked state
WS.AsWorksheet.Unprotect(EmptyParam, 0);
ShowMessage('Worksheet Unprotected...');
end;
end;