Нужно в процедуре выбрать один из двух массивов, потом произвести множество алгоритмов именно с этим массивом, изменив его Пытался сделать это через третий массив, но выходит ошибка Сan't assign to array Упрощённый пример кода: [vba]
Код
Option Explicit Dim ar1(1, 1) As Variant Dim ar2(1, 1) As Variant
Sub test_ar() ar1(1, 1) = 5 ar2(1, 1) = 10
test_arr2 1
MsgBox ar1(1, 1) & ar2(1, 1) End Sub
Sub test_arr2(var As Byte) Dim ar3() As Variant Select Case var Case 1 ar3 = ar1 Case 2 ar3 = ar2 End Select
ar3(1, 1) = ar3(1, 1) + 1
Select Case var Case 1 ar1 = ar3 Case 2 ar2 = ar3 End Select End Sub
[/vba]
Подскажите пожалуйста как решить эту проблему
Нужно в процедуре выбрать один из двух массивов, потом произвести множество алгоритмов именно с этим массивом, изменив его Пытался сделать это через третий массив, но выходит ошибка Сan't assign to array Упрощённый пример кода: [vba]
Код
Option Explicit Dim ar1(1, 1) As Variant Dim ar2(1, 1) As Variant
Sub test_ar() ar1(1, 1) = 5 ar2(1, 1) = 10
test_arr2 1
MsgBox ar1(1, 1) & ar2(1, 1) End Sub
Sub test_arr2(var As Byte) Dim ar3() As Variant Select Case var Case 1 ar3 = ar1 Case 2 ar3 = ar2 End Select
ar3(1, 1) = ar3(1, 1) + 1
Select Case var Case 1 ar1 = ar3 Case 2 ar2 = ar3 End Select End Sub
Pelena, ситуация в том, что у меня есть две таблице 10 на 10 в виде объектов UserForm Данные об этих таблицах хранятся в двух массивах Я предварительно выбираю с какой из двух таблиц буду работать и произвожу действие - на пример закрашиваю одну из ячеек и все соседние с ней Данные о таблице №1 хранятся в массиве arr1(10, 10) Данные о таблице №2 хранятся в массиве arr1(10, 10)
Далее говорю, что хочу закрасить ячейку по адресу 5, 3 и выбираю одну из двух таблиц
Пока нашел только вариант через дополнительную процедуру выбирать массив и затем передавать в процедуру обработки этот массив ByRef [vba]
Код
Option Explicit Dim ar1(1, 1) As Variant Dim ar2(1, 1) As Variant
Sub test_ar() ar1(1, 1) = 5 ar2(1, 1) = 10
test_arr2 1
MsgBox ar1(1, 1) & ar2(1, 1) End Sub
Sub test_arr2(var As Byte) Select Case var Case 1 test_arr3 ar1 Case 2 test_arr3 ar2 End Select End Sub
Sub test_arr3(ar3() as Variant) ar3(1, 1) + 1 End Sub
[/vba]
Pelena, ситуация в том, что у меня есть две таблице 10 на 10 в виде объектов UserForm Данные об этих таблицах хранятся в двух массивах Я предварительно выбираю с какой из двух таблиц буду работать и произвожу действие - на пример закрашиваю одну из ячеек и все соседние с ней Данные о таблице №1 хранятся в массиве arr1(10, 10) Данные о таблице №2 хранятся в массиве arr1(10, 10)
Далее говорю, что хочу закрасить ячейку по адресу 5, 3 и выбираю одну из двух таблиц
Пока нашел только вариант через дополнительную процедуру выбирать массив и затем передавать в процедуру обработки этот массив ByRef [vba]
Код
Option Explicit Dim ar1(1, 1) As Variant Dim ar2(1, 1) As Variant
Sub test_ar() ar1(1, 1) = 5 ar2(1, 1) = 10
test_arr2 1
MsgBox ar1(1, 1) & ar2(1, 1) End Sub
Sub test_arr2(var As Byte) Select Case var Case 1 test_arr3 ar1 Case 2 test_arr3 ar2 End Select End Sub
Sub test_arr3(ar3() as Variant) ar3(1, 1) + 1 End Sub
Ничёнепонимаю! Зачем все это? Чем по рабоче-крестьянски не устраивает? [vba]
Код
Sub qq() Dim ar1, ar2 ar1 = [a1:j10].Value ar2 = [a11:j20].Value Select Case [o1] Case 1: test ar1: [a1].Resize(10, 10).Value = ar1 Case 2: test ar2: [a11].Resize(10, 10).Value = ar2 End Select End Sub Sub test(ar) ar(5, 5) = ar(5, 5) * 5 End Sub
[/vba]
Ничёнепонимаю! Зачем все это? Чем по рабоче-крестьянски не устраивает? [vba]
Код
Sub qq() Dim ar1, ar2 ar1 = [a1:j10].Value ar2 = [a11:j20].Value Select Case [o1] Case 1: test ar1: [a1].Resize(10, 10).Value = ar1 Case 2: test ar2: [a11].Resize(10, 10).Value = ar2 End Select End Sub Sub test(ar) ar(5, 5) = ar(5, 5) * 5 End Sub
RAN, согласен, можно и так Это уже издержки моего проекта, приходится создавать промежуточные сабы, иначе всё превращается в кашу и трудно контролировать
RAN, согласен, можно и так Это уже издержки моего проекта, приходится создавать промежуточные сабы, иначе всё превращается в кашу и трудно контролироватьFidgy