Тема: Объявление переменных

Заранее прошу прщения за глупый вопрос.
Почему когда я объявляю так переменные так:
Public n(1 To 38) As Integer
в них не записывается значение.
А когда объявляю по порядку вот так:
Public n1 As Integer
Public n2 As Integer
и т.д.
- записывается!!!

Re: Объявление переменных

Дарья пишет:

Public n(1 To 38) As Integer
в них не записывается значение.

Попробуйте так

n(1)=...
n(2)=...
...
n(38)=...

Re: Объявление переменных

Вы не поняли что я имела ввиду.
При такой записи
надо очень много строк писать:
Public n1 As Integer
Public n2 As Integer
и т.д.
А я хотела записать одной строкой:
Public n(1 To 38) As Integer
Но при объявлении одной строкой переменных
n(1)
n(2)
...
n(38)
их значение не передается в следующий код.
А при объявлении каждой переменной отдельной строкой - значение переменных передается в следующий код!!!
Я хотела не писать много строчек объявляя каждую переменную в отдельной строчке.

Re: Объявление переменных

Дарья пишет:

при объявлении одной строкой переменных
n(1)
n(2)
...
n(38)
их значение не передается в следующий код.

Покажите этот следующий код.

Re: Объявление переменных

Этим кодом (представлен фрагмент) я нахожу блоки и записываю найденые блоки в n1, n2 и т.д.
'Public n(1 To 38) As Integer - Этой строкой не получается
Public n1 As Integer
Public n2 As Integer
Public Sub Poisk_01()
     Dim ss As AcadSelectionSet
     Dim fType(2) As Integer
     Dim fData(2) As Variant
     With ThisDrawing.SelectionSets
          While .Count > 0
               .Item(0).Delete
          Wend
          Set ss = .Add("$Blocks$")
     End With
     fType(0) = 0: fType(1) = 2: fType(2) = 67
     fData(0) = "INSERT": fData(1) = "П11-(211)": fData(2) = 0 '
     ss.Select acSelectionSetAll, , , fType, fData
n1 = ss.Count
     ss.Delete
End Sub

Re: Объявление переменных

В другом модуле есть код типа:
Sub pof()
Res = n1 + n2
MsgBox Res
End Sub
При однострочном объявлении все переменных в этот код не передаются значения n.
При многострочном - передаются!!

Re: Объявление переменных

> Дарья
Из приведенных примеров не видно главного - как вы передаете значения из процедуры в процедуру.
А проблема как раз в этом. VB6 позволяет передавать и возвращать массивы, вот пример такого синтаксиса:

Sub ArraySample()
    Dim MyArray(2) As Integer
    MyArray(0) = 15
    MyArray(1) = 16
    MyArray(2) = 17
    Call ArrayPrint(MyArray)
End Sub
Private Sub ArrayPrint(YourArray() As Integer)
    Dim i As Integer
    For i = 0 To UBound(YourArray)
        MsgBox YourArray(i)
    Next i
End Sub

Вариант номер два - объявить соответсвующий массив на уровне глобального.

Re: Объявление переменных

> LeonidSN
>Вариант номер два — объявить соответсвующий >массив на уровне глобального.
Простите мне мое невежество, а как это сделать???
Я думала что
Public <Переменная> As Variant
то и есть глобальное объявление переменной.

Re: Объявление переменных

> Дарья
Ну, правильно.

Public MyArray(2) As Integer

объявленный в секции (General)(Declarations) модуля.
(может вы объявляли его в модуле формы?)
Прав brigval (как всегда) - покажите код.
Из приведенных фрагментов не видна структура программы и, следовательно, непонятны механизмы передачи данных в этой структуре.

Re: Объявление переменных

> Дарья

n1 = ss.Count

замените на

n(1) = ss.Count

а

Res = n1 + n2

замените на

Res = n(1) + n(2)

Если Вы пользуетесь элементами массива, то элементы массива и должны участвовать в присвоениях/вычислениях.