In general you're asking to use global variables and that is almost always the wrong approach. The only time, I believe, global variables are appropriate is when you are going to store something that is immutable for the life of the application. Examples might include the product information or a cached copy of a lookup table loaded from the database. In all other cases I don't believe global variables are a good idea. They should almost never be mutable as this can cause problems if they are updated while someone is trying to use them (especially for lists of items).
Nevertheless in the cases where global variables make sense I prefer to create a standalone shared class that exposes the data. The data is generally loaded upon first use (using Lazy when possible) and then remains unchanged for the life of the application. Following the single responsibility principle I tend to use a separate shared class for unrelated data but single shared class for related data. Going back to the product information, this is probably in a class by itself simply because nothing else makes sense.
Note: My VB is rusty so expect issues.
Public Class ApplicationInfo
' Singleton stuff, globally shared data
Public Property Shared Default() As ApplicationInfo
Private Shared _default As New ApplicationInfo
' Instance data
Public Property Name As String
'Do work to get name of application
In this example I'm using the singleton pattern. I prefer a singleton object over a shared class because it gives me flexibility to move away from singleton later without having to update a lot of code. The net effect is the same though.
To use it.
Dim appName = ApplicationInfo.Default.Name
In the case of commonly needed data then I prefer to use methods on a shared class that can then cache the data if desired.
Public Shared Class GeographicService
Public Shared Function GetCountries () As IEnumerable(Of Country)
' Get country data from DB if not cached
Public Shared Function GetStates ( ) As IEnumerable(Of State)
' Get states from DB if not cached
Dim countries = GeographicService.GetCountries
But I generally recommend you not going this route just to share data between forms. In most cases expose properties on the form(s) (or create a constructor that has parameters) and allow the caller to provide the data (even if across forms). Ideally you are using some sort of servicing layer that exposes services that you can pass to your forms.