loading...


loading...


公告
loading...

Google 全球搜索 本站搜索
我的分类(专题)
loading...

日志更新
loading...

最新评论
loading...

留言板
loading...

链接

Blog信息
loading...




Google 网上论坛 Beta 版
订阅 excelblogger
电子邮件:
访问此论坛





my e-mail:xhdsxfjy@163.com



链接用户窗体与工作表(续)
fanjy 发表于 2008-9-20 15:40:00

本文是《链接用户窗体与工作表》一文的续篇,在阅读本文之前,请先阅读《链接用户窗体与工作表》。
现在,我们需要使该用户窗体在原有功能的基础上增加搜索功能。当选择字段并输入相应的数据后,能搜索到记录并显示在用户窗体中,如图4所示。
LinkUserformAndWorksheet4
图4:在用户窗体中增加搜索功能
在原窗体中添加一个框架,在框架内添加组合框、文本框和命令按钮,各控件的名称和Tag属性如下:
名称(Tag属性)
frmFind()
cmbFind()
txtFind()
cmdFind(tgFind)
其中,括号内为空表明没有设置该控件的Tag属性。
为了使用户能搜索任一字段,因此添加了组合框cmbFind。用户可以首先从中选择要搜索的字段,然后在右侧的文本框中输入要搜索数据的全部或部分内容,最后当单击查找按钮后在下方显示该条记录的信息。
要填充组合框,在用户窗体的初始化事件Initialize的代码中添加下列语句:
Me.cmbFind.List = Application.Transpose(wksContacts.Range("ColHeads").Value)
其中,ColHeads为工作表中标题行区域的名称。此时,在将该名称区域的数据放置到组合框之前,需要将列数据转置为行数据。
接下来,确保查找按钮处于禁用状态,直到在组合框和文本框中含有相应的数据。因此,添加了两个事件过程和一个启用/禁用按钮控件的过程。代码如下:
Private Sub cmbFind_Change()
‘如果用户已选择组合框中的项目或者在文本框中输入内容
‘那么启用查找按钮
If Me.cmbFind.ListIndex > -1 And Len(Me.txtFind.Text) > 0 Then
EnableControls "tgFind"
Else
EnableControls "tgFind", True
End If
End Sub

Private Sub txtFind_Change()
If Me.cmbFind.ListIndex > -1 And Len(Me.txtFind.Text) > 0 Then
EnableControls "tgFind"
Else
EnableControls "tgFind", True
End If
End Sub

Private Sub EnableControls(sTag As String, _
Optional bDisable As Boolean = False)
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Tag = sTag Then
ctl.Enabled = Not bDisable
End If
Next ctl
End Sub

查找按钮cmdFind的代码如下:

Private Sub cmdFind_Click()
Dim lCol As Long
Dim rFound As Range

‘因为组合框的ListIndex属性起始值为0,因此加1以确定搜索列
lCol = Me.cmbFind.ListIndex + 1

‘查找包含文本框中文本的第一个单元格
‘Lookat参数的值为xlPart表明不需要完全匹配
Set rFound = wksContacts.Columns(lCol).Find(What:=Me.txtFind.Text, _
LookIn:=xlValues, _
LookAt:=xlPart)

‘如果找到记录则改变滚动条到该记录
‘否则显示一条新记录
If Not rFound Is Nothing Then
Me.scbContact.Value = rFound.Row - 1
Else
Me.scbContact.Value = Me.scbContact.Max
End If
End Sub

至此,新增功能完成。当然,您可以按需要再添加其他功能,以丰富该窗体。


阅读全文 | 回复(0) | 引用通告 | 编辑
 


发表评论:

    大名:
    密码:
    主页:
    标题:
    loading...


fanjy的博客

Powered by Oblog.