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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.04.2015, 20:11   #1
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
Сообщение Данные из одной формы в другую

Здравствуйте,

Ситуация следующая:
На Форме1 есть КомбоБокс1 и Кнопка1. По нажатию на Кнопку1 запускается код:
Код:
Private Sub CommandButton1_Click()
For i = 0 To ComboBox1.ListCount - 1
    If (ComboBox1.ListIndex = i) Then
    UserForm2.Show
    UserForm2.Label1.Caption = UserForm1.ComboBox1.List(i)
    UserForm2.TextBox1.Value = s(i)    's(i) - глобальная переменная типа String в модуле Формы1
    End If
Next i
End Sub
Открывается Форма2;
ТекстБокс1 из Формы2 получает значение хранящееся в s(i);
Далее мы редактируем ТестБокс1;
Как сделать так чтобы по нажатию Кнопки1 из Формы2, значение s(i) менялось на значение ТекстБокса1?
Thez вне форума Ответить с цитированием
Старый 07.04.2015, 22:06   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Наверно написать обработчик нажатия Кнопки1 из Формы2? (Ваш К.О.)
А зачем в этом коде цикл, вроде можно
Код:
Private Sub CommandButton1_Click()
  If ComboBox1.ListIndex >= 0 Then
    UserForm2.Show
    UserForm2.Label1.Caption = UserForm1.ComboBox1.Value
    UserForm2.TextBox1.Value = s(ComboBox1.ListIndex)    's(i) - глобальная переменная типа String в модуле Формы1
  End If
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.04.2015, 18:00   #3
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
По умолчанию

Смысл в том, что s(ComboBox1.ListIndex) должен перезаписаться на значение из ТекстБокса1 Формы2. А из модуля Формы2 нельзя присвоить значение переменной из Формы1 (ну или я просто не знаю как это сделать).

А про то что цикл можно заменить этим не знал, спасибо
Thez вне форума Ответить с цитированием
Старый 08.04.2015, 18:31   #4
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Thez, Модуль формы не поддерживает глобальных переменных

Однако, если под этим термином подразумевается переменная, об'явленная на уровне модуля, то можно просто об'явить её в любом стандартном модуле, т.е.

Код:
Public S() As String 'Или Global S() As String
pashulka вне форума Ответить с цитированием
Старый 08.04.2015, 19:09   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Цитата:
Сообщение от pashulka Посмотреть сообщение
Модуль формы не поддерживает глобальных переменных
Не совсем так. Глобальную переменную объявить можно, но это не должен быть массив (и еще кое-какие типы, попробуйте и увидите). Простой Variant - можно, а Variant может содержать массив
Пример
Код:
'код UserForm1, на которой есть CommandButton1

Option Explicit

Public s

Private Sub CommandButton1_Click()
  UserForm2.Show
End Sub

Private Sub UserForm_Initialize()
  s = Split("мама мыла раму") 'Variant/String(0 to 2)
End Sub

'код UserForm2, на которой есть ListBox1

Option Explicit

Private Sub UserForm_Initialize()
  ListBox1.List = UserForm1.s
End Sub
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.04.2015, 19:15   #6
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Зачем скрещивать мои слова с Вашим видением терминов ?

Глобальная переменная, в самом прямом смысле этого слова, это Global S As String
pashulka вне форума Ответить с цитированием
Старый 08.04.2015, 19:36   #7
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

А зачем Вы вообще заговорили о глобальных переменных? Вопрос был - как из модуля одной формы обратиться к массиву в модуле другой формы. Вы заявили, что это невозможно, а я показал, как это сделать.
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 08.04.2015, 19:48   #8
pashulka
Форумчанин
 
Регистрация: 03.11.2006
Сообщений: 524
По умолчанию

Затем, что глобальных (Global) переменных в модуле формы быть не может

Это Вы восприняли мои слова как отрицание такой возможности, а я просто предложил ещё один вариант, хотя и предполагающий наличие стандартного модуля, но зато не требующий изменения типа переменной.

Последний раз редактировалось pashulka; 08.04.2015 в 19:59.
pashulka вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенести данные из одной книги в другую CHIPATAM Microsoft Office Excel 11 12.11.2012 16:33
из одной формы в другую. Madmaxisss C# (си шарп) 3 04.07.2012 08:56
Данные из одной таблицы в другую chircov090993 Компоненты Delphi 5 12.06.2012 00:26
Как в VB передать данные с одной формы в другую Vceznayka Microsoft Office Excel 1 26.12.2011 17:13
Отправлять данные из одной таблицы в другую Таня84 БД в Delphi 14 28.04.2007 23:23