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

Сообщество, в настоящее время я скрываю свои вкладки на многостраничной пользовательской форме, кроме текущей вкладки. Пользователь может нажимать кнопки для переключения между страницами. Некоторые кнопки имеют общие подпрограммы. Когда пользователь нажимает кнопку, она скрывает предыдущую вкладку после выбора новой вкладки. Я полагаю, что это двойной вопрос.

1) Как я могу получить предыдущее значение выбора вкладки?

2) Как я могу перебирать значения вкладок? Моя цель — проверить текущий заголовок или значение вкладки по сравнению со всеми остальными. Я подумал, что это будет простой способ скрыть их все, независимо от того, какая страница и какая кнопка вызывает подпрограмму.

Прямо сейчас у меня есть это только для одной кнопки вкладки...

Sub NewCreditSetup()
    MultiPage1.Pages(1).Visible = True
    MultiPage1.Value = 1
    MultiPage1.Pages(0).Visible = False
    //More code displaying tab...irrelevant
End Sub  

person CBC_NS    schedule 24.10.2013    source источник
comment
что вы имеете в виду под "кнопками"? Не могли бы вы прикрепить снимок экрана с изображением ваших «кнопок»? Вы пытались с помощью событий «страницы» поймать их и в результате инициировать действие ...?   -  person Kazimierz Jawor    schedule 24.10.2013


Ответы (2)


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

Ie:

Private iPrevTab As Integer
Private iCurTab As Integer

Private Sub MultiPage1_Change()
    iPrevTab = iCurTab
    iCurTab = MultiPage1.Index

    'You can also check here what that tab is to do something with it
    If MultiPage1.Value = MultiPage1.Pages("mySpecialPage").Index Then
        'Go Nuts
    End If

End Sub

Затем вы можете просмотреть все вкладки и проверить их имя, заголовок или индекс. Например:

Private Sub LoopTabs()
    Dim ii as Integer        

    for ii = 1 to MultiPage1.Pages.Count
        If MultiPage1.Pages(ii).Index = iPrevTab Then
           Debug.Print MultiPage1.Pages(ii).Name & " " & MultiPage1.Pages(ii).Caption
        End If
    Next ii
End Sub

Вероятно, также стоит обратить внимание на осторожность при отображении и скрытии вкладок, так как это не является обычным явлением и может запутать пользователя. Хотя я оставлю это на ваше усмотрение.

person CuberChase    schedule 24.10.2013
comment
Это сработало прекрасно. Спасибо за сайт. Я пошел с вашей логикой. Во время этого процесса я также пробовал это, что работало. Для каждой кнопки, которая переходит на страницу, я использовал одну и ту же процедуру для отображения содержимого. Я проверил, было ли значение текущей страницы номером страницы, присвоенным целевой целевой странице. Если это не так, я присвоил ему значение x. Затем я сделал текущую страницу невидимой. (Все вкладки невидимы, кроме домашней страницы). Затем я сделал целевую целевую страницу видимой. Еще раз спасибо. - person CBC_NS; 25.10.2013
comment
Отличная работа. Вы также можете использовать это, чтобы запомнить состояние формы. Т.е. если пользователь находится на второй вкладке и закрывает ее, при следующей загрузке вы можете установить его на эту вкладку. - person CuberChase; 26.10.2013

Я думаю, это поможет вам.

Dim m As String
    m = MultiPage1.SelectedItem.Caption
MsgBox m
person Rtronic    schedule 22.01.2019