Sorry no dynamic arrays, but you can make something almost as good if you should run into trouble. An array can be redimmed, but you will lose everything stored in it, you can start out by passing every value from your array to a midway array, then redim your array, and pass the variables back.
About counting types, just keep track of the number in a variable if you need so. Looping trough 1500 types is probably not going to take more than a millisecond.
array1size=99999 dim array1(array1size) ;the expansion part dim midway(array1size) for a=0 to array1size midway(a)=array1(a) next dim array1(array1size+100000) for a=0 to array1size array1(a)=midway(a) next array1size=array1size+100000
About counting types, just keep track of the number in a variable if you need so. Looping trough 1500 types is probably not going to take more than a millisecond.