Nearest
We can construct such a function $f$ using the definition of Voronoi diagram. Given a set of generating points $p_1, p_2, \ldots, p_n$ the Voronoi cell $R_i$ consists of all points in the plane that are closer to $p_i$ than to any of the other generators. In other words, any point belongs to the Voronoi cell of the nearest $p_i$.
Therefore, as indicated by Rahul in the comments, we can use Nearest:
Generate some random points
SeedRandom[10]
pts = RandomReal[10, {10, 2}];
and suppose vals is our list of constant values, for example
vals = {v1, v2, v3, v4, v5, v6, v7, v8, v9, v10};
Make a table of rules to tell Nearest which value we want returned for each nearest point
rules = MapThread[Rule, {pts, vals}]
(* {{6.67917, 8.33874} -> v1, <<...>>, {7.15778, 6.34697} -> v10} *)
Compute the corresponding NearestFunction and define f
nf = Nearest[rules];
f[x_, y_] := First[nf[{x, y}]]
Try it with a point
f[2.1, 6.8]
(* v4 *)
Since we got v4, the point must have been in $R_4$, indeed
Needs["ComputationalGeometry`"]
Show[DiagramPlot[pts, PlotRange -> {{-2, 12}, {-2, 12}}],
Graphics[{Blue, PointSize[Large], Point[{2.1, 6.8}]}]]

Addendum (for version 10.1 or later)
There is an undocumented function that can be used instead of Marco's positioninmesh. For a mesh-based region mr, Region`Mesh`MeshMemberCellIndex[mr, pt] returns the index of the mesh cell containing the point pt.
The example below assigns a constant value (which happens to be a color) to each Voronoi cell and displays it as the point p moves across the mesh
SeedRandom[10];
pts = RandomReal[10, {10, 2}];
vm = VoronoiMesh[pts];
cind = Region`Mesh`MeshMemberCellIndex[vm];
Manipulate[
HighlightMesh[vm, Style[#, ColorData[88, Last[#]]]]& @ cind[p], {{p, {5, 5}}, Locator}]

Nearest: http://mathematica.stackexchange.com/q/17075/484 – Jun 04 '15 at 19:33