Well, there are lots of ways you can do all these things. First, a Class is defined in a separate file - I'm pretty sure there are some guides around here to creating your own class.
As for drawing the map, I would guess that if all the hexagons form a static pattern for each game, you could do something like this:
1. Work out how large the playing area is, based on the screen.
2. Work out how large each hexagon can be - if the pattern has a maximum of X hexes across or down, then you can use that, based on the largest dimension of the screen
3. Now you know the size, you can calculate the coordinates for each one; treat them as overlapping squares to make things simple; you'll have to work out your own rules for how you number them, eg from top centre, bottom left, or whatever
4. If the terrain is random, then perhaps in your class constructor you can assign that random value
5. Create a set of bitmaps for the different sorts of terrain
You might generate a new random hex from your class to fill the board with something like
For i = 0 to 112
Dim h as Hexagon
h.Initialize("") ' get a new random hexagon
MapTiles(i) = h
Somewhere, at the end of each turn, you'll probably be updating the display. That's where you iterate over the array, and based on its position in the array, you calculate the co-ordinates (create a sub that returns them, for example), check the type of terrain, and draw the appropriate bitmap at that screen position.
To work out your positions, start small. I'm assuming all hexagons abut each other directly; so imagine just seven of them - one in the middle, and one touching each of its edges. Draw that out on a piece of paper. Think about how you might number them, and then how to work out a coordinate system.
I think this is one of the sorts of problems where a good time spent with paper and pencil will mean you'll spend much less time struggling with code.