Массивы бывают не только числовые, но и строковые и типа Date и прочие. Подходит любой известный нам тип. Например:
Dim s(1 To 50) As String
Это означает, что в каждой из 50 ячеек должно находиться не число, а произвольная строка. Вот элементарный пример использования строкового массива:
Dim s(1 To 50) As String
Private Sub Command1_Click()
s(21) = "Привет": Debug.Print s(21)
End Sub
Вот пример работы с массивами других типов:
Dim b(1 To 30, 1 To 6) As Boolean
Dim DT(1 To 10) As Date
Private Sub Command1_Click()
b(2, 3) = False: Debug.Print b(2, 3)
DT(2) = #1/15/2156 11:59:42 PM#: Debug.Print DT(2)
End Sub
Еще пример:
Private Enum типРуль
вверх
влево
вниз
вправо
End Enum
Dim Руль(1 To 300) As типРуль
Private Sub Command1_Click()
Руль(200) = вправо: Debug.Print Руль(200)
Руль(220) = влево: Debug.Print Руль(220)
End Sub
Здесь будут напечатаны числа 3 и 1, так как элементы перечислимого типа пронумерованы по порядку от 0.
Границы индексов в круглых скобках тоже могут быть разными, например:
Dim a(20 To 60) As Integer
Здесь под числа отводится 41 ячейка. Еще пример:
Dim b(0 To 9, -20 To 30) As Integer
Здесь под числа отводится 10*51=510 ячеек.
Раз вы объявили границы индексов, то должны их придерживаться. Так, неправильно было бы теперь написать a(15) = 0.
Если нижняя граница индекса вашего массива равна нулю, то вы можете сэкономить усилия и вместо
Dim f(0 To 9) As Integer
писать
Dim f(9) As Integer
так как Visual Basic по умолчанию считает нижней границей индекса всех массивов число 0. Если же вам хочется, чтобы эта льгота касалась массивов с нижней границей равной не 0, а 1, то наверху программы напишите