【问题标题】:How to set ListBox1.RowSource property?如何设置 ListBox1.RowSource 属性?
【发布时间】:2018-09-17 11:20:58
【问题描述】:

我有一个 16 张的 Excel 工作簿。

我想在我的用户窗体上创建一个列表框,它将列出工作表 1 单元格 F2 到 F50 中的数据。

我的代码

Private Sub UserForm_Initialize()

ListBox1.Clear

Sheet11.Activate

ListBox1.RowSource = "Sheet11!F2:F10"

End Sub

返回错误

“运行时错误 '380' 无法设置 RowSource 属性。无效的属性值”

【问题讨论】:

  • 这是错字Sheet11 吗?
  • 我倾向于使用表格。然后,您可以在清除列表框后执行以下操作从表中添加值:Me.oMyListBox.List = oMyWB.oMyWS.ListObjects("<table name>").DataBodyRange.Value
  • 使用"Sheet11!F2:F10" 正在寻找名为“Sheet11”的工作表,使用Sheet11.Activate 实际上是在激活第11 个工作表。您应该使用工作表名称而不是工作表索引。作为行源。您不需要激活工作表来填充列表框,除非您真的想要。
  • 谢谢 Davesexcel,当我使用工作表名称而不是工作表编号(工作表 11、工作表 10 等)时,它可以工作。我认为 Excel VBA 的对象在开发人员部件上查看时通常遵循对象属性中列出的名称。

标签: excel vba


【解决方案1】:

要引用工作表名称,假设您的工作表名为Sheet1...

ListBox1.RowSource = "'Sheet1'!F2:F10"

要引用工作表的代号,假设Sheet11是代号...

ListBox1.RowSource = "'" & Sheet11.Name & "'!F2:F10"

【讨论】:

    【解决方案2】:

    另一种选择是使用

    ListBox1.RowSource = Sheets("Sheet1").Range("F1:F10").Address (external:=true)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 2021-12-03
      • 1970-01-01
      • 2011-07-07
      • 2012-04-16
      相关资源
      最近更新 更多