Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Поиск глобальной переменной по ее названию
 
Суть в следующем.
При открытии книги объявляется 50 глобальных переменных (начальные значения), которые соответствуют названиям соседних столбцов и присваивается значение каждой из них.
Допустим при изменении значения мне нужно найти эту переменную и сравнить с новым значением.
То есть Range("A2").Value (к примеру) вернет значение "Переменная1". Дальше нужно найти эту объявленную переменную (то есть переменную с таким же названием, которое вернуло Range().Value) и найти ее значение, а потом сравнить их.
Можно это как то сделать или нет?)
Файл для примера прикладываю.
Изменено: andrey062006 - 2 Апр 2015 22:17:06
 
В таком виде - нельзя. Да и "50 глобальных переменных" - это неверный подход. Объявите массив. Можно найти номер элемента массива, равного заданному значению, это будет как бы "номер переменной". Да и прочитать диапазон в массив можно одним действием:
Код
Public Переменные()

Sub peremenn()
Переменные = Sheets("Лист1").Range("B2:B6").Value 'двумерный массив (1 to 5, 1 to 1)
'можно получить одномерный массив:
Переменные = Application.Transpose(Sheets("Лист1").Range("B2:B6").Value) 'массив (1 to 5)
End Sub
 
Казанский, попробовал, но что то не выходит, не пойму как выдернуть данные из этого массива
 
Из какого? Только не говорите, что из массива Переменные :)
 
Hugo, тогда я вообще ничего не понимаю:(
 
Казанский, разобрался, только вот он почему то сбрасывает через какое то время этот массив.
Ну то есть допустим через несколько запусков он больше не видит этот массив из других модулей...
 
Цитата
andrey062006 написал: тогда я вообще ничего не понимаю
Там в коде выше два массива, оба Переменные - так что название массива ни о чём не говорит, а вот из какгого из двух собираетесь выдирать - могли сказать.
 
Hugo, из первого, но с этим я уже разобрался) Только почему то через несколько запусков он больше не видит этот массив из других модулей..

Кстати, случайно не можете подсказать как обновить оттдельный элемент userform при изменении данных на листе. В коде листа попробовал написать функцию вызова Private sub из userform но не вышло.
 
Публичные переменные "слетают" при ошибках в работе кода, когда он останавливается.
А форму можно перерисовать (Repaint) - если я правильно понял что нужно.
 
Hugo, Repaint (это было первое что я попробовал) уже пробовал - результат нулевой
 
Ну так сделайте пример файла для форума с проблемой и посмотрим.
 
Hugo, файл прикладываю.
Форма не модальная. При изменении данных на листе в диапазоне А2:В6 она должна обновить ListBox, но что то не выходит(
 
У меня обновляет.
Там правда модуля нет - может в нём что-то мешает... Но если вызвать форму и менять ячейки - форма обновляется.
 
Hugo, данные в листбоксе то не обновляются!
 
Ну значит Вам не везёт... А мне везёт :)
Только что-то мы от темы удалились.
Изменено: Hugo - 3 Апр 2015 00:06:21
 
Hugo, нашел ошибку))))))))) у меня автопересчет формул был отключен)))))))))
Спасибо, теперь всё норм)
Страницы: 1
Читают тему (гостей: 1)