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. } }