Excel VBA ActiveX ListBox不允许单击

时间:2015-01-31 15:09:22

标签: excel vba excel-vba listbox

我创建了一些代码,用Lables,TextBoxes和ListBox填充Excel工作表。使用.List = Sheets()。Range()。填充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

有人可以建议我在哪里寻找解决方案吗?

4 个答案:

答案 0 :(得分:2)

无法向您解释,但如果您将Activesheet.Select添加到Sub的末尾,则可以选择您的商品。

答案 1 :(得分: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

答案 2 :(得分:0)

为了记录所有可能的解决方案,这对我有用。 所有论坛中提供的解决方法都没有帮助我。

我动态添加了一堆ListBox,包括位置,高度,宽度,ListRange等。当我的代码在工作表中创建控件时,我无法选择ListBox中的项目。

这是解决我的问题的原因:.OLEObjects()。Activate 创建控件后,您需要立即激活它。

答案 3 :(得分:0)

那里有同样的问题。作为一种解决方法(app.activate对我不起作用,也不希望这种行为),您可以在高度上加1,它将重新绘制每个对象并重新激活它。

ListBox_Options1.Height = ListBox_Options1.Height + 1

这是一种解决方法,而不是错误的来源。