Making error messages more efficient
There's probably much more to say about this code, but there's one point that deserves immediate and serious attention: You're handling errors the way vba and vb6 did it... but this code can only be vb.net:


Handles tsbEditNeighbour.Click



In the .NET world, you throw away all this On Error GoTo Madness, and work with Exceptions instead.

Exceptions are a much more robust way of handling errors, and give you much more information than just an error number and description (including the whole stack trace, and the exact code file and line number that threw the exception): see System.Exception on MSDN.

The basic idea is that you try some code, and catch to handle any exceptions thrown:

Try
    'some code
Catch ex As Exception
    'error-handling
End Try


See Try-Catch-Finally statements on MSDN for the full syntax.



I'll get back to this post later, to review other points.