Как навсегда добавить новую многостраничную вкладку и назвать ее? - PullRequest
1 голос
/ 26 марта 2019

Я пытаюсь добавить новую вкладку в многостраничную пользовательскую форму, однако я хочу, чтобы изменение было постоянным и сохранялось при следующем запуске программы.

Я нашел способ добавить вкладку, но это работало только для этой среды выполнения. Затем я нашел код, который следует, и изменил мои параметры доверия на доверительный доступ к модели проекта VBA, однако я продолжаю сталкиваться с тем, что объект не поддерживает это свойство?

Sub Test()

Dim vbComp As Object
Dim objCntrl As Control

Set vbComp = ThisWorkbook.VBProject.VBComponents("TabStripUserForm")

Set objCntrl = vbComp.Designer.Controls("ProductListTabStrip")

'add page

objCntrl.Pages.Add

'remove page

objCntrl.Pages.Remove (1)

End Sub

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

1 Ответ

2 голосов
/ 26 марта 2019

Если вы просите постоянно добавить что-то здесь:

enter image description here

тогда, к счастью, это сделать нелегко (, вероятно, естькакой-то туманный путь с каким-то отражением, но я не уверен, что это хорошая идея ).Как, вероятно, замечено, если приведенный ниже код выполняется, то это должно быть показано только один раз:

enter image description here

Sub TestMe()

    Dim tabObj As Control
    Set tabObj = Form.Controls("Tabs")

    With tabObj
        .Tabs.Add "Gosho"
        .Tabs.Add "Pesho"
        .Tabs.Add "Atanas"
        Debug.Print .Object.Count
    End With

    Form.Show

End Sub

Почему?

Причина в том, что форма является планом, она похожа на класс.И добавление свойства в класс из кода как-то не очень хорошая практика.

Обходной путь?

Лучший обходной путь - это использовать форму с ООП и разделением задач.,Затем в приложении всякий раз, когда он вызывается, появляется объект, созданный после чертежа.Вместо того, чтобы «ломать» объект, форма будет скрыта.Затем, через приложение, если оно вызывается снова, оно будет показано с помощью опции Hide.Примеры:

А что, если файл Excel будет полностью закрыт? Будет ли он работать при открытии с новыми вкладками?

Нет.Но для этого случая должен быть другой обходной путь: запись вкладок где-нибудь на листе настроек и вызов формы, с учетом значений на листе настроек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...