Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Массив. Не могу передать из функции переменной  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 129
Dim x() As Variant
ReDim x(LBound(y_func("ololol"), 1) To UBound(y_func("ololol"), 1), _            'изначально этой строки не было, написал в попытке'
 LBound(y_func("ololol"), 2) To UBound(y_func("ololol"), 2))                          'исправить, но оно всё равно не работает'
x = y_func("ololol")           'Пишет type mismatch'
End Sub

Function SplitPrmCln(NamePrmtr As String) As Variant
Dim y As String, x As Variant, i As Integer, j As Integer, cnt As Integer
y = CurrentDb.OpenRecordset("Select VLE from prmtr_main where Prmtr = '" & NamePrmtr & "'")!Vle        'y=1_4_3,2_4_6,3_5_-3,4_5_0'
x = Split(y, ",")
ReDim x(LBound(x) To UBound(x), 1 To 3)
For i = LBound(x, 1) To UBound(x, 1)
    For j = 0 To 2
        x(i, j + 1) = Split(Split(y, ",")(i), "_")(j)
    Next
Next
SplitPrmCln = x
End Function


Помогите, пожалуйста! Как передать значение этой функции?
____
vk.com/taenfox
10 авг 18, 09:31    [21637223]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 18013
Растолкуй ты мне, зачем ты сплитуешь y в массив x, а потом сразу всё насплитованное сливаешь в корзину переопределением?
10 авг 18, 09:40    [21637237]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 129
Akina
Растолкуй ты мне, зачем ты сплитуешь y в массив x, а потом сразу всё насплитованное сливаешь в корзину переопределением?


Это мой полуторный опыт работы с массивом. Когда делал функцию она почему то ругалась на размерность массива или я не правильно понял...

Если покажете как правильно нужно было это сделать буду безмерно благодарен! (куда уж больше...)
Но вот прям ща проблемес - не могу передать этот массив из функции
10 авг 18, 09:46    [21637246]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
4d_monster
Member

Откуда: Москва
Сообщений: 1457
А если так?
Function SplitPrmCln(NamePrmtr As String) As Variant()
10 авг 18, 09:49    [21637251]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 129
4d_monster
А если так?
Function SplitPrmCln(NamePrmtr As String) As Variant()


ну, это привело к аналогичной ошибке в строке
SplitPrmCln = x
10 авг 18, 09:54    [21637260]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
court
Member

Откуда:
Сообщений: 1469
MokeevP
Dim x() As Variant
скобки тут убери, и всё "наладиться"

Всякие ReDim-ы - нафик
Обращаться к элементам как x(i)(j)
10 авг 18, 09:58    [21637268]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
MokeevP
Member

Откуда: Нижний Новгород
Сообщений: 129
court
MokeevP
Dim x() As Variant
скобки тут убери, и всё "наладиться"

Всякие ReDim-ы - нафик
Обращаться к элементам как x(i)(j)


Работает! Спасибо!

правда с redim'ом не понял как правильно поступить надо
10 авг 18, 10:16    [21637292]     Ответить | Цитировать Сообщить модератору
 Re: Массив. Не могу передать из функции переменной  [new]
court
Member

Откуда:
Сообщений: 1469
MokeevP,

нее, ReDim всё-таки понадобился ...

как-то так
Sub test()
    Dim s As String, arr As Variant, arr1 As Variant, i As Long, j As Long
    
    s = "1_4_3,2_4_6,3_5_-3,4_5_0"
    arr = Split(s, ",")
    arr1 = Array()
    ReDim arr1(UBound(arr))
    
    For i = LBound(arr) To UBound(arr)
        arr1(i) = Split(arr(i), "_")
    Next
    
    '   ------------------------------------------------------
    Debug.Print "i", "j", "value"
    Debug.Print "---------------------------------"
    For i = LBound(arr1) To UBound(arr1)
        For j = LBound(arr1(i)) To UBound(arr1(i))
            Debug.Print i, j, arr1(i)(j)
        Next
    Next
    
End Sub

i             j             value
---------------------------------
 0             0            1
 0             1            4
 0             2            3
 1             0            2
 1             1            4
 1             2            6
 2             0            3
 2             1            5
 2             2            -3
 3             0            4
 3             1            5
 3             2            0
10 авг 18, 10:23    [21637298]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить