Добрый день! Я пытаюсь получить данные из формы, которую составил (см. рис.) Код: [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
Stolbec_slova = Application.InputBox("Укажите столбец, в который необходимо занести нужное вам слово (указать название шапки столбца)" & _ Chr(13) & "Внимание, обязательно укажите в шапке название столбца!!!", "Столбец", Type:=8)
[/vba] Как правильно обращаться к ячейкам(элементам с данными) формы, с которых хочу занести данные в мой код?
Добрый день! Я пытаюсь получить данные из формы, которую составил (см. рис.) Код: [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
Stolbec_slova = Application.InputBox("Укажите столбец, в который необходимо занести нужное вам слово (указать название шапки столбца)" & _ Chr(13) & "Внимание, обязательно укажите в шапке название столбца!!!", "Столбец", Type:=8)
Почему я не могу сразу обратиться к переменным, прописанным в коде формы?
потому, что они объявлены, как локальные (читай про области видимости переменных) если нужно обращаться непосредственно к переменным формы (хотя, это плохая практика) - объяви их как 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]
Почему я не могу сразу обратиться к переменным, прописанным в коде формы?
потому, что они объявлены, как локальные (читай про области видимости переменных) если нужно обращаться непосредственно к переменным формы (хотя, это плохая практика) - объяви их как 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]
[/vba] в данном случае, в любом макросе переменная Kontrolnoe_slovo всегда будет пониматься как переменная из UserForm1, я правильно понимаю? Или сначала надо будет объявить как-то о загрузке данных с UserForm1?
KSV, Спасибо, почитаю! [vba]
Код
Public Kontrolnoe_slovo As String
[/vba] в данном случае, в любом макросе переменная Kontrolnoe_slovo всегда будет пониматься как переменная из UserForm1, я правильно понимаю? Или сначала надо будет объявить как-то о загрузке данных с UserForm1?Roman777
[offtop]а кто поощряет? я ему ответил на конкретный вопрос и показал примеры, чтобы учился правильному... другое дело, что с этим уровнем знаний он все рано будет делать как проще и понятнее ему, а не как правильно...
[offtop]а кто поощряет? я ему ответил на конкретный вопрос и показал примеры, чтобы учился правильному... другое дело, что с этим уровнем знаний он все рано будет делать как проще и понятнее ему, а не как правильно...KSV