Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Массив в VBA Добавлено: 17.12.08 12:39  

Автор вопроса:  Иван
Всем доброго времени суток!
Подскажите плиз: Попросили сделать задачку на VBA по работе с массивом. На Vb6 нет проблем, на VBA никогда не работал с массивами, начал писать не пойму, короче вопросы:
1. можно ли массив вывести прямо на форму и как
2. при объявлении массива n-переменных нужно использовать redim или как?

Спасибо!

Ответить

  Ответы Всего ответов: 4  

Номер ответа: 1
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #1 Добавлено: 17.12.08 15:03
На VbA - нет проблем. По моему нет разницы в этом вопросе между VB6 и VBA.
[source]
Dim ArrLng(0 to 10) As Long 'Объявлен одномерный массив из 11 элементов
Dim ArrLng(1 to 11) As Long 'Объявлен одномерный массив из 11 элементов
dim ArrLng(0 to 4, 0 to 2) as Long 'Объявлен двумерный массив из 5*3=15 элементов
rem Все эти массвы статические в них допустимо записывать только числа типа Long
Dim ArrStr() as String 'Объявлен динамический массив
Redim ArrStr (0 to 4, 0 to 1) 'Массив переопределён
ArrStr (0,0)="Маша"
ArrStr (0,1)="800руб/час"
ArrStr (1,0)="Оля"
ArrStr (1,1)="1000руб/час"
ArrStr (2,0)="Галя"
ArrStr (2,1)="на халяву" 'Заполнение массива всякой фигнёй
Redim ArrStr (0 to 5, 0 to 1) 'Массив ёщё раз переопределён, его данные стёрты

Dim ArrStr2() as string

Redim ArrStr2 (0 to 4) 'Массив переопределён
ArrStr2 (0)="Маша"
ArrStr2 (1)="Оля"
ArrStr2 (2)="Галя" 'Заполнение массива всякой фигнёй
Redim Preserve ArrStr2 (0 to 7) 'Массив ёщё раз переопределён, его данные НЕ стёрты
Redim ArrStr2 (0 to 8) 'Массив ёщё раз переопределён, его данные стёрты
Rem При использовании Preserve в многомерных массивах данные сохраняются только в первом измерении вроде бы
 /source]

Ответить

Номер ответа: 2
Автор ответа:
 Иван



Вопросов: 14
Ответов: 16
 Профиль | | #2 Добавлено: 17.12.08 16:18
т.е получается нельзя написать например:
n=val(textbox1)
dim a(n)
 for i=1 to n
  ;(тело)
 next i

Правильно так?:

n=val(textbox1)
dim a as ...
redim a(n)
 for i=1 to n
  ;(тело)
 next i
или я не о том?

Ответить

Номер ответа: 3
Автор ответа:
 Иван



Вопросов: 14
Ответов: 16
 Профиль | | #3 Добавлено: 17.12.08 16:20
А как вывести массив на экран (на форму или еще куда нибудь)?

Ответить

Номер ответа: 4
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #4 Добавлено: 26.12.08 18:22
'Этот код вставь в новую форму, на которую помести одну кнопку (CommandButton1)
  1.  
  2. 'Одно текстовое поле (TextBox1)
  3. 'один Листбокс (ListBox1)
  4.  
  5. Private Sub CommandButton1_Click()
  6. Dim a() As String 'Объявляем массив
  7.  
  8. Dim n As Long
  9. Dim i As Long
  10.  
  11. Dim BufStr As String
  12. BufStr = "Уровень" 'Для наглядности
  13.  
  14. n = Val(Me.TextBox1.Text) 'Считываем текст из текстбокса1 и преобразуем в этот текст число
  15. If n = 0 Then 'Если в текстбоксе не число _
  16.                 или оно равно нулю
  17.     Me.TextBox1.Text = 5 'Изменяем текст в текстбоксе1
  18.     Exit Sub  'и выходим из процедуры
  19. End If
  20.  
  21. ReDim a(0 To n - 1) As String 'Переопределяем динамический массив a()
  22.  
  23. For i = 0 To n - 1
  24.     a(i) = BufStr & " №" & i + 1 'Заполняем массив фигнёй
  25. Next i
  26.  
  27. Me.ListBox1.List = a() 'Выводим массив с фигнёй в листбокс1
  28.  
  29. End Sub

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам