VBA Excel 实践(五)Excel窗体、控件与excel数据(单元格)的关联

您所在的位置:网站首页 VBA调出窗体后然后再打开就处于锁定状态咋回事 VBA Excel 实践(五)Excel窗体、控件与excel数据(单元格)的关联

VBA Excel 实践(五)Excel窗体、控件与excel数据(单元格)的关联

2023-07-15 04:35| 来源: 网络整理| 查看: 265

引言:

之前已经描述分别描述了Excel VBA的窗体、控件和Excel本身的对象(也就是数据的承载者)。本章主要描述Excle VBA中如何将控件和excel中的数据相关联。

一、如何关联已有的Excel文档和VBA

其实这个就是如何使用Vba打开已有的Excel文件。这其实是我们关联excel和Excel最早要干的事,如果不打开文件,你还做毛线的操作。

使用workbooks.open方法:

表达式.Open(FileName, UpdateLinks, ReadOnly, Format, Password, WriteResPassword, IgnoreReadOnlyRecommended, Origin, Delimiter, Editable, Notify, Converter, AddToMru, Local, CorruptLoad)

括号里的都是参数

Sub open_test() Workbooks.Open "D:\pbxtest.xlsx" Workbooks(2).Activate End Sub

上面示例是表示打开文件pbxtest.xlsx,并激活。为什么使用 Workbooks(2).Activate呢,因为你打开excel本身就会有一个workbook,用workbooks(1)表示。(可以参考前面章节)

注意:open方法带的路径是一个绝对路径。

二、如何关联控件和Excel数据

目前我找到两个方法:

1.使用控件的controlsource,rowsource属性,能使用controlsource属性的控件如下图。

 rowsource 指定为组合框或列表框提供列表的来源

示例1:

下例在列表框中使用工作表单元格(A1:E4)的区域,文本框使用工作表单元格(A1)。这个代码示例使用了 RowSource 、BoundColumn 和 ControlSource 属性。

若要使用该示例,请将示例代码复制到某窗体的声明变量部分。请确保该窗体包含名为 LIstBox1 的列表框,命名为TextBox1的文本框。在工作表单元格的 A1:E4 中输入数据。

Private Sub UserForm_Initialize() Workbooks(2).Activate TextBox1.ControlSource = "a1" ListBox1.ColumnCount = 5 ListBox1.RowSource = "a1:e4" End Sub

运行结果如下:

红色框表示Textbox内的数据已经和excel的A1内容关联上了,蓝色框标识listbox的数据与Excel的A1:E4的数据关联上了,此时修改A1的内容,窗口内控件的值也会跟着动

如下图:

2.使用Change方法 

 上个例子比较死板,Textbox只能对应显示某一个Excel的单元格,且只能做如下动作:修改单元格然后触发TextBox的内容变化。我想更近一步的操作,比如我想鼠标选定哪个单元格,哪个单元格的内容就显示到TextBox(文本框),并且当修改文本框的内容时,Excel当前选定的单元格内容也会随之改变,该怎么弄?分三步:

首先,写一个选定单元格的方法,并在窗体初始化时调用:

目的:初始化时文本框就能显示已经选定单元格的内容。

'选定Excel单元格 Public Sub select_test() Dim rng As Range Set rng = ActiveCell.Cells UserForm1.TextBox1.Value = rng.Value End Sub '初始化窗口 Private Sub UserForm_Initialize() Workbooks(1).Activate Call select_test End Sub 注意:select_test()方法要定义成public方便不同的模块调用。 

第二,改变文本框内容时,选定的单元格内容同步修改

使用TextBox的Change方法。

Private Sub TextBox1_Change() Set rng = ActiveCell.Cells rng.Value = UserForm1.TextBox1.Value End Sub

第三,文本框显示选定单元格的内容

使用worksheet的SelectionChange方法。

Private Sub Worksheet_SelectionChange(ByVal Target As Range) Call select_test End Sub

选定单元格显示到文本框 

修改文本框内容,EXCEL选定的单元格内容同步修改 

 

不会弄gif图,凑合着看吧。 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3