Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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

Ситуация следующая:
На Форме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, 23:06   #2
Казанский
Профессионал
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,002
Репутация: 741
По умолчанию

Наверно написать обработчик нажатия Кнопки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, 19:00   #3
Thez
Пользователь
 
Регистрация: 23.02.2014
Сообщений: 27
Репутация: 10
По умолчанию

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

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

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

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

Код:

Public S() As String 'Или Global S() As String

pashulka вне форума   Ответить с цитированием
Старый 08.04.2015, 20:09   #5
Казанский
Профессионал
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,002
Репутация: 741
По умолчанию

Цитата:
Сообщение от 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, 20:15   #6
pashulka
Участник клуба
 
Регистрация: 03.11.2006
Сообщений: 524
Репутация: 513
По умолчанию

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перенести данные из одной книги в другую 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


05:08.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru