I never use the Single datatype, I use Double instead.

OK, Here's some code that gets fired when the user click on the "Add" button. The code performs all the validations that we have identified.

I have assumed the your controls have the following names, you will need to either replace the names I have use in my code with the names of your contols, or rename your controls to the names I have used here.

My Names
txtXCoord - X textbox enter
txtYCoord - Y textbox enter
lstCoords - Listbox with Existing coordinates
cbtnAdd - Add coordinates button

There is a lot in this code, so spend some time going through it and testing it to make sure it work as you expect and that you understand exactly what it is doing at each step.
Once your happy with this section, we'll move onto the Edit record code....
VB Code:
  1. Private Sub cbtnAdd_Click()
  2. Dim dXValue As Double
  3. Dim dYValue As Double
  4. Dim lItemNum As Long
  5.  
  6.     ' ----------------------------------------------------
  7.     ' Phase 1 - Check for Valid Data
  8.     ' ----------------------------------------------------
  9.    
  10.     'Check if X Co-ord is populated
  11.     If Me.txtXCoord.Value = "" Then
  12.         MsgBox "Please supply a value for X."
  13.         Me.txtXCoord.SetFocus
  14.         Exit Sub
  15.     End If
  16.    
  17.     'Check if the X Co-ord is a valid number
  18.     If Not IsNumeric(Me.txtXCoord.Value) Then
  19.         MsgBox "X Coordinate must be numeric."
  20.         Me.txtXCoord.SetFocus
  21.         Exit Sub
  22.     End If
  23.    
  24.     'Check if Y Co-ord is populated
  25.     If Me.txtYCoord.Value = "" Then
  26.         MsgBox "Please supply a value for Y."
  27.         Me.txtYCoord.SetFocus
  28.         Exit Sub
  29.     End If
  30.    
  31.     'Check if the Y Co-ord is a valid number
  32.     If Not IsNumeric(Me.txtYCoord.Value) Then
  33.         MsgBox "Y Coordinate must be numeric."
  34.         Me.txtYCoord.SetFocus
  35.         Exit Sub
  36.     End If
  37.    
  38.     'Now that we know that we have numeric values
  39.     'we can pass them into our variables
  40.     dXValue = txtXCoord.Value
  41.     dYValue = txtYCoord.Value
  42.    
  43.    
  44.     ' ----------------------------------------------------
  45.     ' Phase 2 - Check if the x value is already used
  46.     ' ----------------------------------------------------
  47.    
  48.     'Loop through the existing values, trying
  49.     'to find a match
  50.     With Me.lstCoords
  51.         For lItemNum = 0 To .ListCount - 1
  52.            
  53.             If dXValue = CDbl(.List(lItemNum, 0)) Then
  54.                 MsgBox "X Coordinate is in use."
  55.                 Me.txtXCoord.SetFocus
  56.                 Exit Sub
  57.             End If
  58.            
  59.         Next lItemNum
  60.     End With
  61.  
  62.     ' ----------------------------------------------------
  63.     ' Phase 3 - Add the new values and clear the textboxes
  64.     ' ----------------------------------------------------
  65.    
  66.     'Add the values to the listbox
  67.     With Me.lstCoords
  68.         .AddItem (dXValue)
  69.         .Column(1, .ListCount - 1) = dYValue
  70.     End With
  71.    
  72.     'Clear the Y textbox
  73.     Me.txtYCoord.Value = ""
  74.    
  75.     'Clear the X textbox and move the
  76.     'cursor to it
  77.     With Me.txtXCoord
  78.         .Value = ""
  79.         .SetFocus
  80.     End With
  81.    
  82. End Sub