Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2014, 02:12   #1
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию Передача данных в пользовательскую форму

Друзья! Подскажите каким образом можно произвести передачу данных из Модуля (Module) в пользовательскую форму (Userform).

Модуль
Код:
Sub Какая-то процедура()
‘1) Формирование ссылок на книгу
Dim Wb As Workbook: Set Wb = WorkBooks.Open("C:\МойФайл.xls")
‘2) Формирование массива
Dim Массив(1 to 2)
Массив(1)=11: Массив(2)=12
‘3) Запуск Формы
Forma.Show ( << Передача данных в ФОРМУ >>)
End sub
Пользовательская форма:
Код:
Private Sub UserForm_Initialize()
'1) << Работа с ссылкой на книгу WB >>
'2) << Работа с Массивом >>
End Sub
jimmyyong вне форума Ответить с цитированием
Старый 21.10.2014, 03:25   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Объявите книгу и массив как глобальные переменные, и они будут доступны из любого модуля, в том числи и из UserForm.
Для этого, в программный модуль:
Код:
Public Wb As Workbook
Public Массив(1 To 2)
Sub Какая_то_процедура()
    '1) Формирование ссылок на книгу
    Set Wb = Workbooks.Open("C:\МойФайл.xls")
    '2) Формирование массива
    Массив(1) = 11: Массив(2) = 12
    '3) Запуск Формы
    Forma.Show
End Sub
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Старый 21.10.2014, 03:58   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

"передача данных" осуществляется через пармаметры процедуры
обьявление глобальных переменных решает Вашу задачу, но не является передачей данных в принятом в программировании понимании

в одной из анкет на соискание должности программиста я встретился с вопросом:
"Привлекались ли Вы к уголовной ответсвенности за хранение данных в глобальных переменных?"
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.10.2014, 10:47   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Как-то смущает формулировка "передача данных"... Обычно форма сама берёт что ей нужно с листа или из публичных переменных, хотя можно и насильно что-то запихнуть в её элементы:

Код:
Option Explicit

Sub tt()
    UserForm1.Show
End Sub

Sub ttt()
    UserForm1.TextBox1 = "test"
End Sub
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 21.10.2014, 11:11   #5
jimmyyong
Пользователь
 
Регистрация: 17.11.2010
Сообщений: 22
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Как-то смущает формулировка "передача данных"... Обычно форма сама берёт что ей нужно с листа или из публичных переменных, хотя можно и насильно что-то запихнуть в её элементы:
В моем случае форма должна именно получать данные т.к. они формируются динамически в процессе работы процедуры модуля и меняются многократно.

Желания определять глобальные переменные для формы нет потому, как они нужны только для формы и для остальных процедур не задействуются.

Методом проб и ошибок пришел к следующему варианту:
В Модуле:
Код:
Sub Процедура()
Dim Mass(1 To 3)
    Mass(1) = 1111
    Mass(2) = 2222
    Mass(3) = 3333
Call UserForm1.ФОРМА(Mass)
End Sub
В Форме (взамен стандартной процедуры инициализации):
Код:
Sub ФОРМА(Mass)
    For i = LBound(Mass) To UBound(Mass)
        UserForm1.ListBox1.AddItem (Mass(i))
    Next i
    UserForm1.Show
End Sub
jimmyyong вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача данных в ячейки Excel через форму SashaS Microsoft Office Excel 11 11.03.2012 16:43
лабораторная в MS Excel: создать пользовательскую форму с элементами управления muzon45 Помощь студентам 5 22.11.2011 12:15
возможно ли вывести сводную таблицу на пользовательскую форму? Alexa6ka Microsoft Office Excel 2 08.08.2011 10:03
Передача переменных из формы в форму bebecap Общие вопросы Delphi 7 21.09.2009 10:00
Передача данных из формы в форму. Meridian PHP 3 09.04.2009 12:44