The Change event is not used for this purpose. Change is used ONLY when you want to capture each character as it is typed into a control. Change runs multiple times. Once for each character typed. The control's BeforeUpdate or AfterUpdate events are more appropriate, depending on exactly what needs to happen. In this case, you would use the AfterUpdate event. HOWEVER, doing so violates normal forms since you are storing duplicate data which can conflict if not kept properly in sync.
The way to handle this is to create a range table that has Range as it's Primary key and two data fields - Low and High or Begin and End or whatever makes sense to you. Then your query will join to the range table using a left join.
Select tblCalcium.*, tblRange.Range
From tblCalcium Left Join tblRange on tblCalcium.Calcium >= tblRange.Low AND tblCalcium.Calcium <= tblRange.High
This join CANNOT be created in QBE view. You will need to switch to SQL View to create it because it is a non equi-join
Remove the Range field from tblCalcium.
And finally, I'm pretty sure you are headed down the wrong path. You are using data values as your table name and column name. That isn't how we create relational databases. The table name should probably be something like tblSubstance. And instead of Calcium, the column name should be SubstanceValue and you need a third column to identify the Substance. It's value would be "Calcium" The way you are going, you would need a separate table for everything you want to measure.
If you have more elements than just Calcium, you don't need to create a separate Range table for each. You can use the same table by adding a fourth column to specify the Substance name. So, the three rows for Calcium, would each have Calcium as the Substance. This would also change the PK to be compound - Substance + Range.