Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с передачей массива

266
03 марта 2004 года
mhaturov
901 / / 23.10.2003
Народ, у меня какая-то беда с передачей в процедуру массива. Вобщем, происходит это так:
Код:
TempArr1(0) = "Test1"
      TempArr1(0) = "Test2"
      TempArr1(0) = "Test3"
      TempArr1(0) = "Test4"
      TempArr1(0) = "Test5"
     
      TempArr2(0) = 1
      TempArr2(0) = 2
      TempArr2(0) = 3
      TempArr2(0) = 4
      TempArr2(0) = 5
     
      If IsNumeric(Text1(0).Text) Then
        Grid.AddAllCbData CLng(Text1(0).Text), TempArr1, TempArr2
      End If

здесь Grid - это контрол
AddAllCbData - процедура грида:
Код:
Public Sub AddAllCbData(ByVal ColIndex As Long, Arr1 As Variant, Arr2 As Variant)
'МАХ Получает массивы для заполнения комбобоксов
  If ColIndex <= Column.ubound And ColIndex >= Column.LBound Then
    Column(ColIndex).SetComboData Arr1, Arr2
  End If
  'МАХ Текстовый цикл
  Dim I As Long
  For I = LBound(Arr1) To UBound(Arr1)
    Debug.Print Arr1(I)
  Next
End Sub

Сюда уже от массива Arr1(I) остаётся только 1 значение, которое передали первым. Остальные - пустые
Далее:
Column - ещё один контрол.
SetComboData - его процедура:
Код:
Public Sub SetComboData(ByVal ArrCD As Variant, ArrItmDates As Variant)
'МАХ Получает массив данных для комбобокса
  Dim I As Long
  Dim B As Long
 
    For B = CbCol.LBound To CbCol.UBound
      For I = 0 To UBound(ArrCD)
        CbCol(B).AddItem ArrCD(I), I
        CbCol(B).ItemData(I) = ArrItmDates(I)
      Next
    Next
   
End Sub

В ней должны заполняться комбобоксы.
Вобщем, где я не так, как надо, передаю массив? В чём ошибка?
266
03 марта 2004 года
mhaturov
901 / / 23.10.2003
Цитата:
Originally posted by mhaturov
Народ, у меня какая-то беда с передачей в процедуру массива. Вобщем, происходит это так:
Код:
TempArr1(0) = "Test1"
      TempArr1(0) = "Test2"
      TempArr1(0) = "Test3"
      TempArr1(0) = "Test4"
      TempArr1(0) = "Test5"
     
      TempArr2(0) = 1
      TempArr2(0) = 2
      TempArr2(0) = 3
      TempArr2(0) = 4
      TempArr2(0) = 5
     
      If IsNumeric(Text1(0).Text) Then
        Grid.AddAllCbData CLng(Text1(0).Text), TempArr1, TempArr2
      End If

здесь Grid - это контрол
AddAllCbData - процедура грида:
Код:
Public Sub AddAllCbData(ByVal ColIndex As Long, Arr1 As Variant, Arr2 As Variant)
'МАХ Получает массивы для заполнения комбобоксов
  If ColIndex <= Column.ubound And ColIndex >= Column.LBound Then
    Column(ColIndex).SetComboData Arr1, Arr2
  End If
  'МАХ Текстовый цикл
  Dim I As Long
  For I = LBound(Arr1) To UBound(Arr1)
    Debug.Print Arr1(I)
  Next
End Sub

Сюда уже от массива Arr1(I) остаётся только 1 значение, которое передали первым. Остальные - пустые
Далее:
Column - ещё один контрол.
SetComboData - его процедура:
Код:
Public Sub SetComboData(ByVal ArrCD As Variant, ArrItmDates As Variant)
'МАХ Получает массив данных для комбобокса
  Dim I As Long
  Dim B As Long
 
    For B = CbCol.LBound To CbCol.UBound
      For I = 0 To UBound(ArrCD)
        CbCol(B).AddItem ArrCD(I), I
        CbCol(B).ItemData(I) = ArrItmDates(I)
      Next
    Next
   
End Sub

В ней должны заполняться комбобоксы.
Вобщем, где я не так, как надо, передаю массив? В чём ошибка?


Sorry, я опять стормозил. (Посмотрите, что я передаю в 1 процедуре, и как это передаётся в поледнюю (ByVal)):D :D :D

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог