excel - 使用户表单看起来好像在 Excel 工作表中而不是单独的
问题描述
我希望我的用户表单看起来好像它实际上是 Excel 工作表的一部分,而不是 Excel 工作簿的单独窗口。我无法使用实际位于工作表中的 ActiveX 控件,因为我需要为我的 ComboBoxes 指定一个 RawSource,这在 ActiveX 版本下不是一个选项。有没有一种方法可以让我的用户窗体看起来就像它在工作表中一样,就像我使用 ActiveX 控件时一样?
解决方案
您不能使用户窗体出现在工作表“内”。
我不知道你的要求背后的想法。如果您希望能够同时使用表单和工作表,您可以显示您的表单 Non-Modal ( userform1.show False
)
但是,您可以使用 ActiveX 控件。您可以从 VBA 访问这些控件并将 rowSource(属性名为ListFillRange
)设置为 Range,或者您可以单独设置项目(但是您不能混合使用)。
设置为范围:
Dim ctrl As OLEObject
Set ctrl = ThisWorkbook.Worksheets(1).OLEObjects("ComboBox1")
ctrl.ListFillRange = "A2:A10"
设置为单个项目列表:
with ctrl
.ListFillRange = "" ' Make sure that ListFillRange is empty
With .object ' "Object" is the real ComboBox object
.clear
.AddItem "Cheese"
.AddItem "Tomato"
.AddItem "Onion"
.AddItem "Ham"
.AddItem "Olives"
.Value = "Onion"
End With
End With
如果你愿意,你也可以写
Sheet1.ComboBox1.ListFillRange = "A2:A10"
或者
Sheet1.ComboBox1.Clear
Sheet1.ComboBox1.AddItem "Hello"
这假定工作表的代码名称是Sheet1
- 代码名称在 VBA 项目视图中可见,并且可能与工作表名称不同。
推荐阅读
- java - 我可以用什么代替 lcs(最长公共子字符串)
- ffmpeg - 如何使用 ffmpeg 更改 Elecard 流分析器中显示的 slice_type?
- angular - angular 6 如何同时处理不同的调用?
- asp.net - 如何根据环境区分 ASP.Net Core 2.1 应用程序中的数据库?
- python - youtube-dl python 脚本中的自定义用户代理
- python - 如何解决属性错误'float'对象在python中没有属性'split'?
- ruta - 如何在脚本中正确设置 RUTA 配置参数?
- sas - SAS - 保留正在处理的表的名称
- javascript - 尝试导入错误:“ReadableStream”未从“./streams_polyfill”导出
- python - 在同一窗口但在不同的图中绘制两个直方图