【问题标题】:Vba combobox using non-active sheet使用非活动工作表的 Vba 组合框
【发布时间】:2018-11-10 11:30:45
【问题描述】:

我有一个用户表单的组合框,它不是 excel 中的活动表,所以不知道如何去做。

工作表名称为“DoNotPrint - Rate Index”,该工作表中出现在组合框中的值是列 C2:AS2。

Private Sub ComboBox1_Change()

   Sheets("DoNotPrint - Rate Index").Range("C2:AS2") = ComboBox1.Value

End Sub

我尝试了这段代码,当单击组合框列表按钮时,组合框列表没有填充那些列。

【问题讨论】:

  • 不确定我是否理解“单击组合框列表按钮时没有弹出组合框列表”是什么意思。截图有用吗?
  • “尝试在用户窗体中实现组合框”是什么意思?是用户窗体上的组合框吗?当你改变它时它应该做什么?
  • 编辑了我的问题
  • @Comintern 组合框在用户窗体上,是的。只希望用户选择一个组合框选项,然后将该信息放入 excel 文件中的一个单元格中
  • 尝试在用户窗体的 init 事件中将组合框的 RowSource 属性设置为 'DoNotPrint - Rate Index'!C2:AS2,而不是在控件的更改事件中尝试执行任何操作。

标签: excel vba combobox


【解决方案1】:

您发布的代码用于获取组合框中的内容并将其放在工作表上,当它被选中时。但是,如果我理解正确,您的问题是您无法填充组合框。因为您使用单行而不是单列作为数据集,所以您需要转置数据。

Private Sub UserForm_Initialize()
    ComboBox1.List = WorksheetFunction.Transpose(Sheet1.Range("C2:AS2"))
End Sub

【讨论】:

  • 关于工作表名称“DoNotPrint - Rate Index”我应该把它放在哪里?
  • @SharathChander 如果工作表存在于ThisWorkbook 中,最好不要按名称引用它。将工作表的 (Name) 属性设置为例如RateIndexSheet,并使用 RateIndexSheet.Range - 这样,如果用户重命名选项卡,您的代码就不会中断。
猜你喜欢
  • 2018-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2015-07-24
  • 2011-12-24
相关资源
最近更新 更多