作者:绿色风
分类:
时间:2022-08-18
浏览:154
楼主 amulee |
VSTO的功能十分强大。本里介绍如何利用VSTO给Excel添加一个用户面板,其中存放一个ListBox,让用户选择后自动添加入Excel的单元格中。类似于一个有效性列表输入。动画效果如图:
操作过程: 1、新建一个项目,选择Excel工作簿 2、通过添加新建项向该项目内添加一个用户控件
3、在该用户控件内添加一个Windows控件ListBox
4、添加一张工作表取名为“数据源”,向表内添加数据
5、在Thisworkbook内添加代码,用于将这个用户控件添加到表中
- Public Class ThisWorkbook
- '定义用户控制面板
- Private MyUC As UserControl1
- Private Sub ThisWorkbook_Startup() Handles Me.Startup
- '将控制面板添加到Excel中
- MyUC = New UserControl1()
- ActionsPane.Controls.Add(MyUC)
- '隐藏数据源表格
- Globals.ThisWorkbook.Sheets("数据源").visible = False
- End Sub
- Private Sub ThisWorkbook_Shutdown() Handles Me.Shutdown
- End Sub
- End Class
6、在用户控件内添加代码,用于ListBox数据的添加和选择数据时的输出。注意ListBox的用法和VBA中不同,多列显示也很麻烦,因而此处用Tab将不同列分开。
- Public Class UserControl1
- '加载事件
- Private Sub UserControl1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Dim i As Long
- Dim ArrYS
- '将数据源表格中的内容添加至数组
- ArrYS = Globals.ThisWorkbook.Sheets("数据源").usedrange.value
- With Me.ListBox1
- '清除所有项
- .Items.Clear()
- '绑定数据
- For i = 2 To UBound(ArrYS)
- '这里的Listbox设置多列有些麻烦,用Tab代替了
- .Items.Add(ArrYS(i, 1) & vbTab & ArrYS(i, 2))
- Next i
- End With
- End Sub
- 'ListBox单击事件
- Private Sub ListBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ListBox1.Click
- Dim Arr
- Dim Rng As Microsoft.Office.Interop.Excel.Range
- '将选中项转换为数组
- Arr = Split(Me.ListBox1.SelectedItem.ToString, vbTab)
- '设定区域
- Rng = Globals.ThisWorkbook.Application.ActiveCell.Resize(1, 2)
- '赋值
- Rng.Value = Arr
- End Sub
- End Class
附件下载: 利用VSTO添加一个自定义用户面板.rar |
2楼 kevinchengcw |
收藏学习!阿木V5 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一