Excel VBA ActiveX ListBox不允许点击。

问题描述 投票:2回答:4

我创建了一段代码,用表格、TextBoxes和ListBox填充一个Excel表格。 在用.List=Sheets().Range().Value填充ListBox后,我无法点击选择一个项目。 如果我保存工作表,关闭并重新打开,它就能正常工作。

我已经检查了 http:/blogs.technet.comthe_microsoft_excel_support_team_blogarchive20141211forms-controls-stop-working-after-december-2014-updates-.aspx。

但我没有收到错误,所以这似乎是错误的修复方法。

当我在KB中搜索以下内容时http:/support.microsoft.comkb3025036EN-US。

症状和我遇到的不一样。

我也试过使用这里发布的Sheets().Activate。Excel ActiveX Listbox在文件打开时未启用。

但这并没有帮助,或者说我实现的不正确。

这是创建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

谁能建议我在哪里可以找到解决这个问题的方法?

excel vba excel-vba listbox
4个回答
2
投票

不能给你一个解释,但如果你添加了......List=Sheets(.Range(.Value)后,我无法点击选择项目。Activesheet.Select 到你的Sub的末尾,然后你可以选择你的项目。


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

1
投票

为了记录所有可能的解决方案,以下是我的工作方法。所有论坛提供的工作方法都没有帮助我。

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

这就是解决我问题的方法:.OLEObjects().Activate你需要在创建控件后不久就激活它。


0
投票

同样的问题。作为一个变通方法(app.activate对我来说不起作用,而且这个行为也不是我所希望的),你可以在高度上加1,它将缓慢地重新绘制每个对象并重新激活它。

ListBox_Options1.Height = ListBox_Options1.Height + 1

这是一个变通的方法,不是错误的根源。

© www.soinside.com 2019 - 2024. All rights reserved.