前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用户窗体示例:工作表数据与用户窗体的交互

用户窗体示例:工作表数据与用户窗体的交互

作者头像
fanjy
发布2022-11-16 10:33:17
1.4K0
发布2022-11-16 10:33:17
举报
文章被收录于专栏:完美Excel

标签:VBA,用户窗体

好的网站是非常优秀的学习资源,认真研究其分享的知识是我们快速提高水平的方法之一。这个示例仍然来自于thesmallman.com,演示了用户窗体如何与工作表中的数据进行交互:如何使用Excel工作表中的数据填充用户窗体,并将编辑后的数据发送回工作表;并且在这个例中,只需在用户窗体中输入一个关键字,然后单击回车键将自动填充用户窗体。

建立一个好的用户窗体的关键是结构。理想情况下,用户窗体中的项目应该具有逻辑布局,以便在编写代码以将用户窗体信息发送到数据集时,可以使用顺序循环,而不是未排序的循环。例如,本示例的用户窗体演示如下图1所示。

图1

这个用户窗体中的Textbox1(文本框1)应该是数据库第1列中的信息,Textbox2(文本框2)应位于第2列,依此类推。这听起来很合乎逻辑,但你会惊讶地发现,很少有用户窗体是用这种简单的逻辑来设置的。不知道为什么!

在这个示例中,我们会添加一些非常简洁的逻辑。如果输入有效的注册号(在textbox1中)并按Enter键(回车键),则将预填充这个用户窗体。

如上图1所示,我输入注册号101后按回车键,数据填充了这个用户窗体,完成这个操作的程序如下:

Private Sub editstudent1_KeyDown( _

ByVal KeyCode As MSForms.ReturnInteger, _

ByVal Shift As Integer)

If KeyCode = vbKeyReturn Then

Findit

End If

End Sub

这个过程在单击回车键后调用Findit过程:

'查找并填充记录

Private Sub Findit()

Dim fnd As Range

Dim Search As String

Dim sh As Worksheet

Dim i As Integer

Set sh = Sheet2

Search = editstudent1.Text

Set fnd = sh.Columns("A:A").Find(Search, , , xlWhole)

If fnd Is Nothing Then

MsgBox "没有找到记录", , "错误"

editstudent1.Text = ""

frmeditrecord.Hide

Else

For i = 2 To 13

frmeditrecord.Controls("editstudent" & i).Text = sh.Cells(fnd.Row, i).Value

Next i

End If

End Sub

上面的Findit过程检查名为editstudent1的texbox1中的项。如果找到了这些项目,则会使用该唯一注册号中的记录填充用户窗体。如果找不到该注册号,将显示错误消息。

编辑用户窗体后,有一个“更新”按钮。单击此按钮,会将数据发送回包含数据的工作表,并使用你所做的任何更改对其进行更新。

Private Sub cmdUpdate_Click()

Dim fnd As Range

Dim Search As String

Dim sh As Worksheet

Dim i As Integer

Dim ctl As Object

Set sh = Sheet2

Search = editstudent1.Text

Set fnd = sh.Columns("A:A").Find(Search, , , xlWhole)

For i = 2 To 13

sh.Cells(fnd.Row, i).Value = frmeditrecord.Controls("editstudent" & i).Text

Next i

'清理用户窗体控件

For Each ctl In Me.Controls

If TypeName(ctl) = "TextBox" Then ctl.Value = Null

Next ctl

End Sub

正如你所见,上述过程与将信息填充用户窗体的过程相反。

如有兴趣的朋友,可以直接到该网站下载原始示例工作簿,或者到知识星球App完美Excel社群下载中文示例工作簿。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-06-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档