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

 



© 2018 | Анна Петросян | pashelp@yandex.ru