Страницы: 1
RSS
VBA: перейти к метке, по нажатию CommandButton
 
Подскажите плиз, как по событию CommandButton1_Click() перейти к метке в коде?
Изменено: jfd - 25.01.2016 13:58:33
 
Создать отдельную функцию, в которую передать нужные параметры.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist,а можете поподробнее?
как она может выглядеть? точнее как можно передать метку?
Изменено: jfd - 25.01.2016 14:10:24
 
Где метка? Где кнопка? В общем - пример вместо Вас рисовать?! 250 сообщений на форуме...
 
Цитата
vikttur написал: 250 сообщений на форуме...
ну дык не так много за 46 лет присутствия на форуме  ;)
Цитата
Сообщений: 250. Регистрация: 1 Янв 1970
Вполне такой нормальный кинжальчик. Процентов на 100
 
vikttur,  мне не лень сделать пример, просто есть ли смысл грузит форум лишними файлами.

Код модуля
Код
Req:  
If xmldoc.Load(url_request) <> True Then GoTo err

err:
UserForm1.Show
 
Код userform
Код
Private Sub CommandButton1_Click()
GoTo Req '- вот тут в идеале хотелось бы вернуться обратно в модуль к метке Req
End Sub
 
И на чем мне показывать? На пальцах? Плюс не очень корректно менять свое сообщение, удаляя из него то, чтобы было изначально и на что уже есть ответ.
Вот пример передачи параметров в функцию, под свои критерии сами переделаете:
Код
Sub CommanButton1_Click()
    show_message(TextBox1.Value, "TexBox1")
End Sub
Function show_message(text as string, control_name as string)
    msgbox "В '" & control_name & "' записан текст: " & text,vbInformation
end function
саму функцию show_message можно вызвать из любой другой процедуры или функции. Это самый правильный подход.
Если же так прям надо переходить именно на метку(типа GoTo Label), то надо вызывать родительскую процедуру либо с параметром, либо заводить переменную, которая даст понять, что надо сразу идти к метке:
Код
Option Explicit
'указатель, что основную процедуру надо вызывать с определенной метки
Dim bGoto1 As Boolean
'основная процедура
Sub main()
    If bGoto1 Then
        GoTo Label1_
    End If
    Dim a, b
    MsgBox "Выполяем основной код до метки"
    b = 4
    a = b ^ 3
    MsgBox "b равна: " & b & ", a равна: " & a
Label1_:
    If bGoto1 Then 'только если код метки не должен выполняться без принудительного на неё перехода
        MsgBox "Label1_"
    End If
    bGoto1 = False
End Sub
'вызов процедуры начиная с нужной метки
Sub GotoLabel()
    bGoto1 = True
    main
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Плюс не очень корректно менять свое сообщение, удаляя из него то, чтобы было изначально и на что уже есть ответ.
извиняюсь, удалил до того как увидел ответ.
спасибо
 
Цитата
jfd написал:
не очень корректно менять свое сообщение, удаляя из него то, чтобы было изначально и на что уже есть ответ.
Возвращаясь к вопросу о том, оставить или убрать возможность редактирования своих сообщений: не раз сам попадал в глупую ситуацию - комментировал то, чего уже нет.
 
Цитата
jfd написал: просто есть ли смысл
есть.

А так - вот ▼
Код модуля
Код
Req:  
If xmldoc.Load(url_request) <> True Then GoTo err
 
err:
UserForm1.Show
GoTo Req
Код userform

Код
Private Sub CommandButton1_Click()
' GoTo Req '- вот тут в идеале хотелось бы вернуться обратно в модуль к метке Req
End Sub
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
Страницы: 1
Читают тему
Наверх