2015-01-31 2 views
2

Я создал немного кода, который заполняет лист Excel с помощью Lables, TextBoxes и ListBox. После заполнения ListBox с помощью .List = Sheets(). Range(). Значение Я не могу нажать, чтобы выбрать элемент. Если я сохраню лист, закройте его и заново откройте его.Excel VBA ActiveX ListBox без разрешения нажмите

Я проверил http://blogs.technet.com/b/the_microsoft_excel_support_team_blog/archive/2014/12/11/forms-controls-stop-working-after-december-2014-updates-.aspx

Но я не получаю сообщение об ошибке, так это, кажется, неправильное исправление.

Когда я ищу KB на следующий http://support.microsoft.com/kb/3025036/EN-US

Симптомы отличаются от того, что я испытываю.

Я также попытался с помощью Sheets() Активировать как размещены здесь:. Excel ActiveX Listbox not enabled on file open

Но это не помогло, или я его реализации неправильно.

Это код, который создает ListBox

Private Sub Create_ListBox_ActiveXControlProperties() 

    Dim oLISTBOX As OLEObject 

    Set oLISTBOX = ActiveSheet.OLEObjects.Add(classtype:="Forms.ListBox.1", Top:=35, Width:=500, Left:=650, Height:=600) 
    ActiveSheet.OLEObjects("ListBox1").Object.Font.Size = 14 
    ActiveSheet.OLEObjects("ListBox1").Object.ListStyle = 0 
    ActiveSheet.OLEObjects("ListBox1").Object.List = Sheets("Search Criteria Control").Range("g1:g21").Value 

End Sub 

Может кто-нибудь предложить, где я могу искать решение этого?

ответ

2

Не может дать вам объяснений, но если вы добавите Activesheet.Select в конец вашего Суб, вы можете выбрать свои предметы.

+0

Хорошо один. Я попытался выбрать ячейку на листе, но ничего не сделал. –

+0

Красивые. Спасибо. – mchac

2

Другой способ написания:

Sub M_snb() 
    With ActiveSheet.OLEObjects.Add("Forms.ListBox.1", , , , , , , 35, 50, 65, 60) 
    .Object.Font.Size = 14 
    .Object.List = ActiveSheet.Range("g1:g21").Value 
    .Object.ListIndex = 0 
    .Parent.select 
    End With 
End Sub 
+0

Спасибо snb, я буду экспериментировать с ним. Является ли .Parent.Select эквивалентом Activesheet.Select? – mchac

+0

Да, activesheet является «контейнером»/«родителем» элемента управления ActiveX. – snb

+0

Недурно. Очевидно, что более компактный, чем мой новичок, формирует код. Я изменил ActiveSheet, чтобы указать лист, который является источником (а не активным), и вернулся к «Top: = 35, Width: = 500, Left: = 650, Height: = 600». Одна из запятых была выключена, поэтому ящик был не в том месте, и я не могу вспомнить, какое поле это. – mchac