打开文档或更新时执行代码(填充列表框)?
Execute code (fill listbox) when opening a document or updating?
我很难学习 VBA。没有从基础知识到更高级内容的明确指南。我知道编码,但理解 VBA 中的对象模型和事件系统对我来说有些混乱。
我只是想做一些简单的事情,这会花费我太多时间,例如在 Office 2002 中填写一个列表框(您嵌入工作表中的列表框,而不是用户窗体中的列表框)。我希望默认情况下填充列表框每次打开文档时,列表的来源都会发生变化等
我尝试在过程内部和过程外部的工作表中编写代码,但没有任何效果。
例如,当我没有为鼠标悬停事件编写代码时,我将鼠标悬停在列表框上并且代码执行时出现编译错误。
我直接在工作表里面写的
ListBox1.AddItem "test"
ListBox1.AddItem "test 2"
等...
我认为它可以工作,但没有也看不到我在哪里可以找到工作表 Excel 中的所有事件。 VBA 编辑器中的下拉菜单设置为 "General" 和 "Declarations",第二个中没有更多选项。
您偶然发现了 Excel 中对象模型不涵盖正常使用的部分之一。
这些列表框的数据源是一个范围,设置为
右击控件 - 格式化控件... - 控件 - 输入范围
在这里您可以手动将其设置为一个范围,例如 $A$1:$A$3,但这会带来一些控制问题,因此请改为:
- 在工作簿sheet上创建一个选项列表
- Select那个范围并给它起个名字
- 将该名称设置为列表框的输入范围
- 当您需要向列表框添加值时,只需重新定义命名范围即可。
第 4 步的代码如下所示:
Dim RowCount As Integer
With ActiveWorkbook.Names("OptionList")
RowCount = .RefersToRange.Rows.Count + 1
.RefersTo = .RefersToRange.Resize(RowCount)
.RefersToRange(RowCount) = "New value"
End With
我很难学习 VBA。没有从基础知识到更高级内容的明确指南。我知道编码,但理解 VBA 中的对象模型和事件系统对我来说有些混乱。
我只是想做一些简单的事情,这会花费我太多时间,例如在 Office 2002 中填写一个列表框(您嵌入工作表中的列表框,而不是用户窗体中的列表框)。我希望默认情况下填充列表框每次打开文档时,列表的来源都会发生变化等
我尝试在过程内部和过程外部的工作表中编写代码,但没有任何效果。 例如,当我没有为鼠标悬停事件编写代码时,我将鼠标悬停在列表框上并且代码执行时出现编译错误。
我直接在工作表里面写的
ListBox1.AddItem "test"
ListBox1.AddItem "test 2"
等...
我认为它可以工作,但没有也看不到我在哪里可以找到工作表 Excel 中的所有事件。 VBA 编辑器中的下拉菜单设置为 "General" 和 "Declarations",第二个中没有更多选项。
您偶然发现了 Excel 中对象模型不涵盖正常使用的部分之一。
这些列表框的数据源是一个范围,设置为
右击控件 - 格式化控件... - 控件 - 输入范围
在这里您可以手动将其设置为一个范围,例如 $A$1:$A$3,但这会带来一些控制问题,因此请改为:
- 在工作簿sheet上创建一个选项列表
- Select那个范围并给它起个名字
- 将该名称设置为列表框的输入范围
- 当您需要向列表框添加值时,只需重新定义命名范围即可。
第 4 步的代码如下所示:
Dim RowCount As Integer
With ActiveWorkbook.Names("OptionList")
RowCount = .RefersToRange.Rows.Count + 1
.RefersTo = .RefersToRange.Resize(RowCount)
.RefersToRange(RowCount) = "New value"
End With