【问题标题】:Unable to select any item from activex ListBox Excel 2010无法从 activex ListBox Excel 2010 中选择任何项目
【发布时间】:2018-01-31 06:27:58
【问题描述】:

我的工作表上有一些 activex ListBox 控件。我已经应用了一个宏,可以在任何单元格上双击打开 litsbox。

问题是在 2010 或更低版本的 excel 版本中,由于鼠标光标卡在加号上,我无法从列表框中选择任何项目。

如果我放大/缩小工作表,问题会持续一段时间,然后再次回到相同的加号图标状态。

2010以上的excel版本不会出现这个问题。

编辑: 代码sn-p:

`Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As 
Boolean)
Application.ScreenUpdating = False
Application.EnableEvents = False

Dim colName, strRange As String
strRange = Target.Address

colName = Replace(Target(1).Address(0, 0), Target(1).row, "")
strRange = colName & CStr(1) & ":" & colName & CStr(6)

If ctrl Is Nothing Then
GoTo ExecuteSub
End If
On Error GoTo ExitSub

listBoxName = "ListBox" + CStr(Target.Column)

On Error GoTo ExitSub
Set ctrl = ActiveSheet.OLEObjects(listBoxName)

If ctrl Is Nothing Then
GoTo ExitSub
Else
Cancel = True

ctrl.Enabled = True
ctrl.Top = Target.Top + Target.Height
ctrl.Left = Target.Left
ctrl.Visible =True`

【问题讨论】:

  • Longshot... 但是为什么不在双击事件之后立即尝试Application.EnableEvents = False 看看会发生什么。
  • 我已经在 double_click 的开头应用了它,并在最后将其设置为 true。
  • 你在双击事件过程中设置Cancel = True了吗?
  • @Variatus 是的,我已经设置好了.. 有影响吗?
  • 请添加您的代码副本以打开您的问题的列表框。

标签: vba excel excel-2010


【解决方案1】:

在浏览了一些论坛和支持问题后,我想出了发生这种情况的可能原因。 似乎 excel 和 activex 对象不能很好地结合在一起。每当 excel 文件在与其原始分辨率不同的屏幕分辨率上放大/缩小或打开时,excel 会在计算各种 activex 对象的大小时出错。因此,这些对象存在临时变形,将鼠标图标呈现为加号图标。(无法选择任何项目)。因此,解决方案是调整或重置 activex 对象的任何大小参数(宽度、高度),或者像刷新操作一样滚动活动窗口。

ActiveWindow.SmallScroll ToLeft:=1
ActiveWindow.SmallScroll ToRight:=1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    相关资源
    最近更新 更多