Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Получить данные из Userform - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Получить данные из Userform (Макросы/Sub)
Получить данные из Userform
Roman777 Дата: Понедельник, 30.03.2015, 15:55 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день!
Я пытаюсь получить данные из формы, которую составил (см. рис.)
Код:
[vba]
Код
Private Sub CommandButton1_Click()
Dim Stroka_shapki As Integer
Dim Stolbec_texta As Integer
Dim Kontrolnoe_slovo As String
Dim kolvo_slov As Integer
Stroka_shapki = TextBox1.Value
Stolbec_texta = TextBox2.Value
Kontrolnoe_slovo = TextBox3.Text
kolvo_slov = TextBox4.Value
' MsgBox ("Stolbec_texta= " & Stolbec_texta & Chr(13) & "Stroka_shapki= " & Stroka_shapki & Chr(13) & _
  "kolvo_slov= " & kolvo_slov & Chr(13) & "Kontrolnoe_slovo= " & Kontrolnoe_slovo)
Me.Hide
End Sub
[/vba]

В макросе, в котором хочу получить данные, получить данные удаётся только так:
Sub Достаём_Слово_по_контрольному_слову()
[vba]
Код
Dim IshodniyText() As String
  Dim iSlovo As String
  Dim CharacterBukv As String
  Dim i, s As Long
  Dim Stolbec_slova As String
  Dim Stolbec_texta As Integer, Stroka_shapki As Integer
   
  i_n = Cells(Rows.Count, 3).End(xlUp).Row
   
  UserForm1.Show
   
  Stolbec_texta = UserForm1.TextBox2.Value
  Stroka_shapki = UserForm1.TextBox1.Value
  kolvo_slov = UserForm1.TextBox4.Value
  Kontrolnoe_slovo = UserForm1.TextBox3.Text

  Stolbec_slova = Application.InputBox("Укажите столбец, в который необходимо занести нужное вам слово (указать название шапки столбца)" & _
  Chr(13) & "Внимание, обязательно укажите в шапке название столбца!!!", "Столбец", Type:=8)
   
  MsgBox ("Stolbec_texta= " & Stolbec_texta & Chr(13) & "Stroka_shapki= " & Stroka_shapki & Chr(13) & _
  "kolvo_slov= " & kolvo_slov & Chr(13) & "Kontrolnoe_slovo= " & Kontrolnoe_slovo)
....
[/vba]
Мне приходится обращаться к элементам Формы. Почему я не могу сразу обратиться к переменным, прописанным в коде формы? И не писать:
[vba]
Код
Stolbec_texta = UserForm1.TextBox2.Value
  Stroka_shapki = UserForm1.TextBox1.Value
  kolvo_slov = UserForm1.TextBox4.Value
  Kontrolnoe_slovo = UserForm1.TextBox3.Text
[/vba]
Как правильно обращаться к ячейкам(элементам с данными) формы, с которых хочу занести данные в мой код?
К сообщению приложен файл: 7329463.jpg (82.9 Kb)


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день!
Я пытаюсь получить данные из формы, которую составил (см. рис.)
Код:
[vba]
Код
Private Sub CommandButton1_Click()
Dim Stroka_shapki As Integer
Dim Stolbec_texta As Integer
Dim Kontrolnoe_slovo As String
Dim kolvo_slov As Integer
Stroka_shapki = TextBox1.Value
Stolbec_texta = TextBox2.Value
Kontrolnoe_slovo = TextBox3.Text
kolvo_slov = TextBox4.Value
' MsgBox ("Stolbec_texta= " & Stolbec_texta & Chr(13) & "Stroka_shapki= " & Stroka_shapki & Chr(13) & _
  "kolvo_slov= " & kolvo_slov & Chr(13) & "Kontrolnoe_slovo= " & Kontrolnoe_slovo)
Me.Hide
End Sub
[/vba]

В макросе, в котором хочу получить данные, получить данные удаётся только так:
Sub Достаём_Слово_по_контрольному_слову()
[vba]
Код
Dim IshodniyText() As String
  Dim iSlovo As String
  Dim CharacterBukv As String
  Dim i, s As Long
  Dim Stolbec_slova As String
  Dim Stolbec_texta As Integer, Stroka_shapki As Integer
   
  i_n = Cells(Rows.Count, 3).End(xlUp).Row
   
  UserForm1.Show
   
  Stolbec_texta = UserForm1.TextBox2.Value
  Stroka_shapki = UserForm1.TextBox1.Value
  kolvo_slov = UserForm1.TextBox4.Value
  Kontrolnoe_slovo = UserForm1.TextBox3.Text

  Stolbec_slova = Application.InputBox("Укажите столбец, в который необходимо занести нужное вам слово (указать название шапки столбца)" & _
  Chr(13) & "Внимание, обязательно укажите в шапке название столбца!!!", "Столбец", Type:=8)
   
  MsgBox ("Stolbec_texta= " & Stolbec_texta & Chr(13) & "Stroka_shapki= " & Stroka_shapki & Chr(13) & _
  "kolvo_slov= " & kolvo_slov & Chr(13) & "Kontrolnoe_slovo= " & Kontrolnoe_slovo)
....
[/vba]
Мне приходится обращаться к элементам Формы. Почему я не могу сразу обратиться к переменным, прописанным в коде формы? И не писать:
[vba]
Код
Stolbec_texta = UserForm1.TextBox2.Value
  Stroka_shapki = UserForm1.TextBox1.Value
  kolvo_slov = UserForm1.TextBox4.Value
  Kontrolnoe_slovo = UserForm1.TextBox3.Text
[/vba]
Как правильно обращаться к ячейкам(элементам с данными) формы, с которых хочу занести данные в мой код?

Автор - Roman777
Дата добавления - 30.03.2015 в 15:55
KSV Дата: Понедельник, 30.03.2015, 16:14 | Сообщение № 2
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
Почему я не могу сразу обратиться к переменным, прописанным в коде формы?

потому, что они объявлены, как локальные (читай про области видимости переменных)
если нужно обращаться непосредственно к переменным формы (хотя, это плохая практика) - объяви их как Public
[vba]
Код
Public Kontrolnoe_slovo As String
[/vba]
[p.s.]как варианты:
1. можно объявить Public переменные в каком-нибудь модуле и при клике на кнопке OK в форме присвоить им значения, а потом читать их из любого места программы.
2. а можно приписать форме нужные свойства, чтобы исключить "случайное" изменение значений твоих переменных
[vba]
Код
Property Get KontrolnoeSlovo() As String
     KontrolnoeSlovo = Kontrolnoe_slovo
End Property
[/vba]
тогда переменная Kontrolnoe_slovo может (даже должна) быть объявлена в модуле формы, как локальная, а читать новое свойство можно так:
[vba]
Код
a = UserForm1.KontrolnoeSlovo
[/vba]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 30.03.2015, 16:32
 
Ответить
Сообщение
Почему я не могу сразу обратиться к переменным, прописанным в коде формы?

потому, что они объявлены, как локальные (читай про области видимости переменных)
если нужно обращаться непосредственно к переменным формы (хотя, это плохая практика) - объяви их как Public
[vba]
Код
Public Kontrolnoe_slovo As String
[/vba]
[p.s.]как варианты:
1. можно объявить Public переменные в каком-нибудь модуле и при клике на кнопке OK в форме присвоить им значения, а потом читать их из любого места программы.
2. а можно приписать форме нужные свойства, чтобы исключить "случайное" изменение значений твоих переменных
[vba]
Код
Property Get KontrolnoeSlovo() As String
     KontrolnoeSlovo = Kontrolnoe_slovo
End Property
[/vba]
тогда переменная Kontrolnoe_slovo может (даже должна) быть объявлена в модуле формы, как локальная, а читать новое свойство можно так:
[vba]
Код
a = UserForm1.KontrolnoeSlovo
[/vba]

Автор - KSV
Дата добавления - 30.03.2015 в 16:14
Roman777 Дата: Понедельник, 30.03.2015, 16:22 | Сообщение № 3
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, Спасибо, почитаю!
[vba]
Код
Public Kontrolnoe_slovo As String
[/vba]
в данном случае, в любом макросе переменная Kontrolnoe_slovo всегда будет пониматься как переменная из UserForm1, я правильно понимаю?
Или сначала надо будет объявить как-то о загрузке данных с UserForm1?


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, Спасибо, почитаю!
[vba]
Код
Public Kontrolnoe_slovo As String
[/vba]
в данном случае, в любом макросе переменная Kontrolnoe_slovo всегда будет пониматься как переменная из UserForm1, я правильно понимаю?
Или сначала надо будет объявить как-то о загрузке данных с UserForm1?

Автор - Roman777
Дата добавления - 30.03.2015 в 16:22
RAN Дата: Понедельник, 30.03.2015, 16:29 | Сообщение № 4
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Не надо.
Надо весь этот код выкинуть на помойку, ибо подход к решению заадачи изначально не правильный.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеНе надо.
Надо весь этот код выкинуть на помойку, ибо подход к решению заадачи изначально не правильный.

Автор - RAN
Дата добавления - 30.03.2015 в 16:29
KSV Дата: Понедельник, 30.03.2015, 16:36 | Сообщение № 5
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
RAN, это понятно! )
но дай человеку "творить"! :)
он же только учится... а когда начнет понимать, что к чему и почему - будет и писать правильно... )


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Понедельник, 30.03.2015, 16:38
 
Ответить
СообщениеRAN, это понятно! )
но дай человеку "творить"! :)
он же только учится... а когда начнет понимать, что к чему и почему - будет и писать правильно... )

Автор - KSV
Дата добавления - 30.03.2015 в 16:36
Roman777 Дата: Понедельник, 30.03.2015, 16:39 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
KSV, RAN, Спасибо, большое!
RAN, Можете показать правильный подход к решению задачи? Буду премного благодарен =)


Много чего не знаю!!!!
 
Ответить
СообщениеKSV, RAN, Спасибо, большое!
RAN, Можете показать правильный подход к решению задачи? Буду премного благодарен =)

Автор - Roman777
Дата добавления - 30.03.2015 в 16:39
RAN Дата: Понедельник, 30.03.2015, 17:16 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Возможно и могу.
Но!
При соблюдении правил форума.
он же только учится

Так зачем поощрять учиться не правильному?


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеВозможно и могу.
Но!
При соблюдении правил форума.
он же только учится

Так зачем поощрять учиться не правильному?

Автор - RAN
Дата добавления - 30.03.2015 в 17:16
KSV Дата: Понедельник, 30.03.2015, 17:30 | Сообщение № 8
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[offtop]а кто поощряет?
я ему ответил на конкретный вопрос и показал примеры, чтобы учился правильному...
другое дело, что с этим уровнем знаний он все рано будет делать как проще и понятнее ему, а не как правильно...


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333
 
Ответить
Сообщение[offtop]а кто поощряет?
я ему ответил на конкретный вопрос и показал примеры, чтобы учился правильному...
другое дело, что с этим уровнем знаний он все рано будет делать как проще и понятнее ему, а не как правильно...

Автор - KSV
Дата добавления - 30.03.2015 в 17:30
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Получить данные из Userform (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!