Код клика в списке пользователя не запускается - PullRequest
0 голосов
/ 17 ноября 2018

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

Вот код:

Private sub SaleType_Click () 
    If SaleType.Value ="Core" then
        'make sale label visible
        QTDV.visible =true
        ' show core option btn
        Core.Visible = true
    End if
End sub

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

If saletype = "" then  
    Dim msg as string Msg = " please select sale type"  
    Msgbox msg, and vbcritical
End if

Если ListBox представляет значение null, он не увидит его пустым и пропустит проверку, если я попытаюсь saletype = null, он все равно пропустит его.

Я искали кажется, что создание списков на панели инструментов странно, потому что Excel не знает, что это за контроль.Я выбрал создание списков в VBA.

Private sub userform_initialize()
    Dim saletype as msforms.Listbox
    Set saletype = me.Controls.Add("Forms.ListBox.1", "SaleType") 

Но при запуске формы и выборе любого параметра в ListBox сабвуфер SaleType_Click не срабатывает.

Ответы [ 2 ]

0 голосов
/ 05 мая 2019

У меня только что была проблема с моим listbox_Click не запускается "каждый раз".Возможно, это было, когда один и тот же выбор был желан дважды.В любом случае, поместите это в код листа для листа, который «показывает» пользовательскую форму:

  userformXXX.listboxYYY.ListIndex = -1
  userformXXX.Show

Это не будет работать, если оно находится в коде пользовательской формы.

0 голосов
/ 17 ноября 2018

Если вы хотите реализовать обработку событий (например, SaleType_Click), вам нужно объявить объект с ключевым словом WithEvents:

Dim WithEvents saletype as msforms.Listbox

А если переменная / свойство не задана, то ее значение не равноне существует, поэтому вместо пустой строки ("") вам нужно проверить NULL - функция IsNull может это сделать (= NULL не работает, поскольку = работает только со значениями):

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