Ti manca il concetto di scope di una variabile.

Ti suggerisco di cercare su MSDN la voce "scope di una variabile vb.net" ho trovato per te questo ma è in inglese: http://msdn.microsoft.com/en-us/library/1t0wsc67.aspx

Se padroneggerai il concetto di cui sopra la soluzione verrà da se.

una soluzione preconfezionata, se vuoi mantenere una connessione aperta e condivisa per tutta l'applicazione potrebbe essere avere un oggetto con un metodo statico che restituisce la connessione di sistema tipo (in pseudocodice, non so come si dichiarino i metodi statici in vb)
codice:
class DataConnectionPoolManager
{
     static Dictionary<string, Connection> connections = new ...
     static void AddConnection(string ConnectionID, Connection c)
     {
        ..aggiunge una nuova connessione al dizionario
     }
     static Connection GetConnection(string ConnectionID)
     {
         ...restituisce una connessione dato il suo nome.
     }
}