MS VBA | Arrays (Массивы) |
➢Работа со статическим массивом ➢Работа с динамическим массивом ➢Пример: переводим русские буквы в латинский вариант ➢Пример: на входе цифра, на выходе соответствующее слово ➢Пример: выдать сумму чисел, не знаем сколько будет чисел на входе
Работа со статическим массивом
Sub NumberOperations() 'объявление статического массива Dim n(1 To 5) Dim operation As String, i As Integer, res 'запрос каждого из пяти чисел For i = 1 To 5 n(i) = Val(InputBox("ВВедите " & i & " -e число")) Next ' запрос операции operation = InputBox("Введите операцию над числами") 'анализ Select Case operation Case "+" For i = 1 To 5 res = res + n(i) Next Case "*" res = n(1) For i = 2 To 5 res = res * n(i) Next Case Else res = "результат не известен" End Select MsgBox "Результат " & res End Sub
Работа с динамическим массивом
'объявление массива (уже без параметров) Sub NumberOperations_d() Dim n() Dim operation As String, i As Integer, res, num num = Val(InputBox("Введите количество чисел")) If num = 0 Then Exit Sub 'переобъявляем динамический массив ReDim n(1 To num) 'запрос каждого из пяти чисел For i = 1 To num n(i) = Val(InputBox("ВВедите " & i & " -e число")) Next ' запрос операции operation = InputBox("Введите операцию над числами") Select Case operation Case "+" For i = 1 To num res = res + n(i) Next Case "*" res = n(1) For i = 2 To num res = res * n(i) Next Case Else res = "результат не известен" End Select End Sub
Пример: переводим русские буквы в латинский вариант
Function Translate(MyStr As String) As String Dim rus, eng, i As Integer, J As Integer, ch As String, resStr 'rus - русские буквы 'eng - англ. буквы 'i - счетчик символов 'J - для перебора массива русских букв 'ch - очередной символ 'resStr -результирующая строка 'задаем массивы rus = Array("а", "б", "в", "г", "д") ' array - создать из перечисленных элементов массив eng = Array("a", "b", "v", "g", "d") For i = 1 To Len(MyStr) ch = Mid(MyStr, i, 1) For J = 0 To 4 ' 0 - так счетчик массивов идет от нуля ' 4 - количество букв описанных в array If ch = rus(J) Then ch = eng(J) End If Next resStr = resStr & ch Next Translate = resStr End Function
Пример: на входе цифра на выходе соответствующее слово
Function Digit(MyInte As Byte) As String Dim inte, word, J As Integer, ch As String, resStr 'inte - число на входе 'word - слово числа 'J - перебор цифр 'ch - очередной символ 'resStr - результат inte = Array("1", "2", "3", "4", "5", "6", "7", "8") word = Array("один", "два", "три", "четыре", "пять", "шесть", "семь", "восемь") ch = MyInte For J = 0 To 7 If ch = inte(J) Then ch = word(J) End If Next resStr = resStr & ch Digit = resStr End Function
Пример: выдать сумму чисел, не знаем сколько будет чисел на входе
'ParamArray - неизвестное количество необязательных аргументов Function MySum(ParamArray n()) Dim ResSum, i As Integer For i = 0 To UBound(n) 'UBound - функция выдающая верхнюю границу массива ResSum = ResSum + n(i)
Next MySum = ResSum End Function
|