Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel ActiveX列表框在使其不可见然后可见后没有响应_Excel_Vba_Listbox_Activex - Fatal编程技术网

Excel ActiveX列表框在使其不可见然后可见后没有响应

Excel ActiveX列表框在使其不可见然后可见后没有响应,excel,vba,listbox,activex,Excel,Vba,Listbox,Activex,我能有意见吗 我在ActiveX控件中有一个用户设置选项面板。用户进行选择并单击按钮。这将隐藏面板并显示结果。另一个按钮删除结果并使ActiveX对象面板再次可见 隐藏可以工作,但当ActiveX对象再次可见时,Listbox ActiveX控件(而不是其他控件)将不再工作,就好像我处于设计模式一样。我在Excel 2013中遇到这个问题,它在Excel 2010中工作 ,但我没有他们描述的确切症状。我不希望我能说服我的IT部门在MSOffice更新中扮演角色,如果有必要,欢迎采取变通办法 代码

我能有意见吗

我在ActiveX控件中有一个用户设置选项面板。用户进行选择并单击按钮。这将隐藏面板并显示结果。另一个按钮删除结果并使ActiveX对象面板再次可见

隐藏可以工作,但当ActiveX对象再次可见时,Listbox ActiveX控件(而不是其他控件)将不再工作,就好像我处于设计模式一样。我在Excel 2013中遇到这个问题,它在Excel 2010中工作

,但我没有他们描述的确切症状。我不希望我能说服我的IT部门在MSOffice更新中扮演角色,如果有必要,欢迎采取变通办法

代码在下面剪掉它。如果我注释掉隐藏子部分的这一部分,那么问题就不会发生

Sub HideFilters()

...

For Each shp In ActiveSheet.Shapes
    If Left(shp.Name, Len("AutoShape_Index_")) <> "AutoShape_Index_" Then
        If Left(shp.Name, Len("Gant_btn")) <> "Gant_btn" Then
            shp.Visible = False
        End If
    End If
Next

'''

End Sub

Sub ShowFilters()

...

For Each shp In ActiveSheet.Shapes
    If Left(shp.Name, Len("AutoShape_Index_")) <> "AutoShape_Index_" Then
        If Left(shp.Name, Len("Gant_btn")) <> "Gant_btn" Then
            shp.Visible = True
        End If
    End If
Next

...

End Sub
Sub HideFilters()
...
对于ActiveSheet.Shapes中的每个shp
如果左(shp.Name,Len(“自选图形索引”))“自选图形索引”,则
如果左侧为(shp.Name,Len(“甘特图”))“甘特图”,则
shp.Visible=False
如果结束
如果结束
下一个
'''
端接头
子过滤器()
...
对于ActiveSheet.Shapes中的每个shp
如果左(shp.Name,Len(“自选图形索引”))“自选图形索引”,则
如果左侧为(shp.Name,Len(“甘特图”))“甘特图”,则
shp.Visible=True
如果结束
如果结束
下一个
...
端接头

当我尝试下面的代码时,它会取消隐藏所有
Active-X控件
,在我的
ActiveSheet
中,它们的名称不以“AutoShape\u Index”或“Gant\u btn”开头(不推荐)


当我尝试下面的代码时,它会取消隐藏所有
Active-X控件
,它们的名称在我的
ActiveSheet
中不以“AutoShape\u Index”或“Gant\u btn”开头(不推荐)


您试图隐藏和取消隐藏哪种类型的
ActiveX控件<代码>文本框
<代码>组合框?当控件变为不可见时,Word也将禁用它,并可能锁定它。看来,相反的做法并没有发挥应有的作用。因此,我建议您尝试显式设置这些属性。坦率地说,我不确定ActiveX控件是否存在这些错误(就像表单控件一样),但即使它们不存在,您所得到的错误也可能是由于它们的等价物在后台工作造成的。因此,尝试让VBA分配一个值并将其删除,可能在第二个循环中进行删除,以允许Word响应。如前所述,列表框。我没有使用word,这一切都发生在Excel中。我选择ActiveX而不是表单控件,以使我能够更好地控制外观。我的备份计划是重新设计方法,将面板移到一张图纸上,将结果移到另一张图纸上,隐藏并显示为所需的变量。我刚刚添加了一行代码,在显示面板时指定Shp.Locked=False。它似乎已经解决了我的问题。如我对以下答案的评论所示,谢谢你。表观溶液不可重现。最后,我改变了设置面板和结果的布局方式,将它们拆分为两张纸。事实证明,这更为明智。我本来应该这么做的。你想隐藏和取消隐藏什么类型的
ActiveX控件<代码>文本框
<代码>组合框?当控件变为不可见时,Word也将禁用它,并可能锁定它。看来,相反的做法并没有发挥应有的作用。因此,我建议您尝试显式设置这些属性。坦率地说,我不确定ActiveX控件是否存在这些错误(就像表单控件一样),但即使它们不存在,您所得到的错误也可能是由于它们的等价物在后台工作造成的。因此,尝试让VBA分配一个值并将其删除,可能在第二个循环中进行删除,以允许Word响应。如前所述,列表框。我没有使用word,这一切都发生在Excel中。我选择ActiveX而不是表单控件,以使我能够更好地控制外观。我的备份计划是重新设计方法,将面板移到一张图纸上,将结果移到另一张图纸上,隐藏并显示为所需的变量。我刚刚添加了一行代码,在显示面板时指定Shp.Locked=False。它似乎已经解决了我的问题。如我对以下答案的评论所示,谢谢你。表观溶液不可重现。最后,我改变了设置面板和结果的布局方式,将它们拆分为两张纸。事实证明,这更为明智。我本来应该这样做的。这段代码没有解决我的问题,但它确实整理了周围的代码,我认为这只是额外的帮助,而不是解决当前问题的方法。起初,瓦里塔斯的建议似乎解决了我的问题。但它不再是-我目前正在调查该代码没有解决我的问题,但它确实整理了周围的代码,我认为这只是额外的帮助,而不是当前问题的解决方案。起初,瓦里塔斯的建议似乎解决了我的问题。但它不再是-我目前正在调查
Option Explicit

Sub ShowFilters()

Dim Shp As Shape

For Each Shp In ActiveSheet.Shapes
    If Not Shp.Name Like "AutoShape_Index_*" And Not Shp.Name Like "Gant_btn*" Then
        Shp.Visible = True
    End If
Next

End Sub