【问题标题】:Listbox error on open打开时列表框错误
【发布时间】:2018-04-11 01:45:41
【问题描述】:

你好 Stackoverflow 社区

我需要帮助解决 ListBox 错误。

我在工作表中有两个列表框(单选)而不是在用户窗体中

ListBox1 - 包含主要项目

ListBox2 - 包含与主要项目相关的子项目

选择主要项目时 -

  • 如果不存在子项,ListBox2.Visible = False

  • 如果子项存在,ListBox2.Visible = True 和 .ListIndex = -1(准备子项选择)

使用工作簿时代码运行完美

问题 打开工作簿时,链接到 ListBox1 的宏将自动运行并弹出错误,并以蓝色突出显示 '.ListBox2'

Error = '编译错误:找不到方法或数据成员'

错误不会一直发生,工作簿是否保存时 ListBox2 是否可见,或者是否选择了子项都无关紧要。

我曾尝试在打开的工作簿事件上使用,但错误出现在这些事件之前。

请帮忙

在发生错误的地方添加代码

Dim ListBox2 As ListObject 'Added this in to see if it fixes error but it has not

    With Sheet3.ListBox2
        .Height = 208.5
        .Width = 126.75
        .Top = 312.75
        .Left = 31.5
        .Visible = False
    End With

【问题讨论】:

  • 请将相关代码添加到您的问题中,指出您遇到错误的行。请注意,编译错误与运行时错误不同。该代码尚未开始运行,因为它无法正确编译。当两次尝试之间没有对工作簿进行任何更改时,它不太可能有时运行。
  • 你说得对,我不认为代码正在运行,因为没有编译。我尝试使用不同的选择保存工作簿,有时它可以顺利打开。我无法确定为什么有时它无法编译。抱歉这个愚蠢的问题,既然我已经发布了问题,我该如何输入代码。这是相当多的代码,并且总是突出显示同一行,甚至认为 listbox2 被多次引用
  • 不要发布“大量代码”。您可以edit 您的问题(使用edit 链接)仅添加相关代码。 (请参阅“minimal reproducible example”。)也许您的第一步应该是将行 Option Explicit 添加到模块的最顶部(以及每个模块,总是如此),然后尝试编译代码以查看是否可以阐明您没有正确声明哪些变量/对象。请注意,它可能会产生多个错误,您需要一次修复一个;这是一件好事。
  • ...无论哪种方式,您都没有正确引用listbox2,可能是未声明的变量或对象? (此外,编译器只会在模块中的第一个错误处停止,无论您使用了多少次......它“不知道”其他错误,因为它没有超过您的第一个错误还没有。)
  • 直到现在我才知道明确的选项是什么,只是用谷歌搜索了一下,这是一个很好的建议。我还没有设法修复最初的错误

标签: vba excel listbox listbox-control


【解决方案1】:

任一:

  • 您没有名为Listbox2 的列表框,或者,

  • Listbox2 不在名为 Sheet3 的工作表中

仔细检查您是否通过正确的名称引用对象。

确认列表框的名称:

  • 点击Developer>Design Mode>Right click列表框>Properties

  • 如果它是一个 ActiveX 列表框,它将有一个属性列表只是,如下所示:

  • 单击属性对话框中(Name) 字段中的名称。确保名称的开头或结尾没有多余的空格

确认工作表的名称:

双击工作表底部的选项卡。确保名称的开头或结尾没有多余的空格


如果您仍然看不到问题:

  • 在 ActiveX 属性对话框中将 Listbox2 重命名为 Listbox222

  • 双击Sheet3 的标签并输入Sheet333

  • 将导致错误的引用更改为Sheet333.Listbox222


更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    相关资源
    最近更新 更多