excel怎么添加、查找和编辑数据记录
在超过中,我已经创建了一个输入数据的用户窗体,用于在工作记录工作表中添加新数据记录。最近,老板提出了新的需求,要通过该用户窗体能够编辑数据记录,增强其功能。
这是我们在使用超过编程时经常会遇到的问题。虽说直接在工作表中添加数据没有什么不好的,但就是有很多人喜欢使用自已设计的界面输入数据,包括我自已。在设计好输入数据界面后,更进一步增强界面的功能,可以查找数据,对找到的数据进行编辑并将修改更新到工作表中。如下所示。
用户窗体界面设计
存储数据的工作表如下所示。
根据工作表数据结构,设计用户窗体如下所示。
其中,用于导航的四个标签按钮放置在一个名为fraNavigate的框架控件中。
编写代码
通用代码
在标准模块中,输入下面的代码:
应用程序接口声明
#如果VBA7和Win64
公共声明时间安全子睡眠库"内核32"
#否则
公共声明子睡眠库"内核32"
#结束如果
' 常量声明
公共常量鼠标向下睡眠=25
' 全局变量声明
公共blnFormComplete布尔值
公共布尔值作为布尔值使用
公共字符串未完成
' 代表消息框信息的变量声明
整数形式的公共响应
公共生活方式一样长
公共字符串输入为字符串
公共字符串
公共字符串
'与工作表行数相关的变量声明
公共图书馆一样长
公众成长一样长
公共lngMatchRow一样长
'获取工作表中最后的数据行
公共函数LastRow(_
objWorkSheetFindLastRow As工作表,_
整数)一样长
带objWorkSheetFindLastRow
LastRow=.单元格(.成排。计数,_
intColFindLastRow ).结束(xlUp).排
以…结尾
结束功能
用户窗体模块代码
在用户窗体模块中,输入下面的代码:
'清空用户窗体中的数据
私有子ClearUserForm()
Me.txtProjectNumber=" "
Me.txtProjectName=" "
Me.cboAnalyst=" "
Me.cboClient=" "
Me.txtDueDate=" "
Me.txtPriority="
Me.cboNumberSamples=" "
末端接头
'添加记录
私有子cmdAddEdit_Click()
'添加记录
If Me.cmdAddEdit.Caption="添加记录"那么
'检查所有的内容是否都已填写。
完整=真
strNotCompleted=" "
如果Me.txtProjectNumber="然后"
blnFormComplete=False
strNotCompleted="项目编号:" vbCrLf
如果…就会结束
如果Me.txtProjectName="然后"
blnFormComplete=False
strNotCompleted=strNotCompleted "项目名称:" vbCrLf
如果…就会结束
If Me.cboAnalyst="那么"
blnFormComplete=False
strNotCompleted=strNotCompleted "分析人:" vbCrLf
如果…就会结束
If Me.cboClient=”那么"
blnFormComplete=False
strNotCompleted=strNotCompleted "客户:" vbCrLf
如果…就会结束
如果Me.txtDueDate="然后"
blnFormComplete=False
strNotCompleted=strNotCompleted "截止日期:" vbCrLf
如果…就会结束
If Me.txtPriority="然后"
blnFormComplete=False
strNotCompleted=strNotCompleted "优先级:" vbCrLf
如果…就会结束
'如果有内容没有填写
'则用信息框给用户显示相关信息
如果blnFormComplete=False,则
strMsg="下列内容还没有填写完成: " vbCrLf街未完工
lngStyle=vbOKOnly vbInformation
strTitle="不能添加记录 未完成内容填写"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
出口接头
如果…就会结束
'查找工作表中最后一行之后的空行
lngLastRow=LastRow(wsproject数据,1) 1
'将用户窗体数据输入到工作表
wsProjectData .单元格(lngLastRow,“A”)=我。txt项目编号
wsProjectData .单元格(lngLastRow," B")=Me.txtProjectName
wsProjectData .Cells(lngLastRow," C")=Me.cboAnalyst
wsProjectData .细胞
wsProjectData .单元格(lngLastRow,“E”)=我。txtduedate
wsProjectData .单元格(lngLastRow,“F”)=我。文本文件(textfile)优先级
wsProjectData .细胞(lngLastRow,“G”)=我。cbonumbersamples
'用信息框给用户显示相关信息
strMsg="已添加记录到wsProjectData .名称"行“Str(lngLastRow)
lngStyle=vbOKOnly vbInformation
strTitle="记录已添加"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
'编辑记录
其他
strMsg="编辑项目编号:“我。文本文件(textfile)项目编号"?
lngStyle=vbYesNo vbQuestion
strTitle="编号记录?"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
如果响应=否,则退出接头
出错时转到项目编号匹配
'查找到要编辑的项目编号所在单元格
lngMatchRow=应用程序。匹配(Me.txtProjectNumber,wsProjectData .列(“一”),)
出现错误转到
'已找到要编辑的项目编号
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的第"字符串(lngMatchRow)"行"
'更新记录
wsProjectData .单元格(lngMatchRow,“A”)=我。txt项目编号
wsProjectData .单元格(lngMatchRow," B")=Me.txtProjectName
wsProjectData .单元格(lngMatchRow," C")=Me.cboAnalyst
wsProjectData .单元格(lngMatchRow,“D”)=我。cbocclient
wsProjectData .单元格(lngMatchRow,“E”)=我。txtduedate
wsProjectData .单元格(lngMatchRow,“F”)=我。文本文件(textfile)优先级
wsProjectData .单元格(lngMatchRow,“G”)=我。cbonumbersamples
'用找到的项目编号所在行数据填充用户窗体
PopulateUserForm lngMatchRow
'用信息框显示相应信息
strMsg="项目编号:“我。文本文件(textfile)项目编号"已更新."
lngStyle=vbOKOnly vbInformation
strTitle="记录已更新"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
如果…就会结束
出口接头
ProjectNumberNoMatch:
strMsg="项目编号“我。文本文件(textfile)项目编号"没有找到."
lngStyle=vbOKOnly vbInformation
strTitle="没有找到项目编号"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
末端接头
私有SubcmdProjectNumberFind _ Click()
lngMatchRow=
如果Me.txtProjectNumber="然后"
strMsg="没有指要查找的项目编号."
lngStyle=vbOKOnly vbInformation
strTitle="没有指定项目编号"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
出口接头
如果…就会结束
出错时转到项目编号匹配
lngMatchRow=应用程序。匹配(Me.txtProjectNumber,wsProjectData .列(“一”),)
出现错误转到
'找到了项目编号。
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的第"字符串(lngMatchRow)"行"
lngRow=lngMatchRow
PopulateUserForm lngMatchRow
出口接头
ProjectNumberNoMatch:
strMsg="项目编号“我。文本文件(textfile)项目编号"没有找到."
lngStyle=vbOKOnly vbInformation
strTitle="没有找到项目编号"
哔哔声
intResponse=MsgBox(strMsg,lngStyle,strTitle)
末端接头
'—————————
'设置导航按钮
'—————————
私有子文件夹第一次点击()
lngRow=2
人口用户形式增长
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的第2行"
末端接头
专用子菜单第一次鼠标按下(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。第一次。特效=特效依赖
末端接头
专用子菜单第一个鼠标移动(按值按钮作为整数,按值移动作为整数,按值X作为单个,按值Y作为单个)
恢复背景颜色
鼠标移动"鼠标第一次"
末端接头
专用子菜单第一个鼠标向上(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。第一次。特效=产生的特效
末端接头
私有子包点击()
lngRow=lngLastRow
人口用户形式增长
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的最后一行"
末端接头
专用子按钮鼠标向下(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。lbllast。特效=特效依赖
末端接头
专用子按钮鼠标移动(按值按钮作为整数,按值移动作为整数,按值X作为单个,按值Y作为单个)
恢复背景颜色
鼠标移动“lblLast”
末端接头
专用子按钮鼠标向上(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。lbllast。特效=产生的特效
末端接头
私有子层文本_鼠标向下(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。lblnext。特效=特效依赖
鼠标向下下一步
末端接头
私有子节点文本_鼠标移动(按值按钮作为整数,按值移动作为整数,按值X作为单个,按值Y作为单个)
恢复背景颜色
鼠标移动" lblNext "
末端接头
私有子层文本_鼠标向上(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。lblnext。特效=产生的特效
blnMouseDown=False
末端接头
专用子按钮鼠标向下(按值按钮作为整数,按值移位作为整数,按值X作为单个,按值Y作为单个)
我。lblprev。特效=特效依赖
MouseDownPrevious
末端接头
专用子按钮鼠标移动(按值按钮作为整数,按值移动作为整数,按值X作为单个,按值Y作为单个)
恢复背景颜色
鼠标移动“lblPrev”
末端接头
专用子按钮鼠标向上(按值按钮为整数,按值移位为整数,按值X为单,按值Y为单)
我。lblprev。特效=产生的特效
blnMouseDown=False
末端接头
私有子鼠标向下下一个()
blnMouseDown=真
当最大使用时执行=真
选择案例增长
案例lngLastRow
lngRow=lngLastRow
其他情况
lngRow=lngRow 1
'到达最后一行
如果lngRow=lngLastRow,则lngRow=lngLastRow
人口用户形式增长
结束选择
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的第"修剪(Str(lngRow))"行"
睡眠鼠标向下睡眠
DoEvents
环
末端接头
私有子MouseDownPrevious()
blnMouseDown=真
当最大使用时执行=真
选择案例增长
案例2
'数据行的首行
lngRow=2
其他情况
lngRow=lngRow1
'到达首行
如果lngRow=2,那么lngRow=2
人口用户形式增长
结束选择
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的第"修剪(Str(lngRow))"行"
睡眠鼠标向下睡眠
DoEvents
环
末端接头
子鼠标移动(字符串控制)
'鼠标经过控件时高亮显示该控件
选择案例控制
'标签名导航
案例“第一个”
我。lblfist。背景色=VB黄色
案例“lblLast”
Me.lblLast.BackColor=vbYellow
案例" lblNext "
Me.lblNext.BackColor=vbYellow
案例“lblPrev”
Me.lblPrev.BackColor=vbYellow
结束选择
末端接头
'添加模式
私有子选项添加模式_单击()
'将按钮文本修改为"添加记录"
Me.cmdAddEdit.Caption="添加记录"
Me.cmdAddEdit.ControlTipText="添加记录"
'使查找项目编号按钮不可见
我。cmdpprojectnumber查找。可见=假
'使导航栏不可见
Me.fraNavigate.Visible=False
'使显示记录条数信息的标签不可见
我。lblrecrdnoftool。可见=假
'清除用户窗体中的数据
ClearUserForm
末端接头
'查找和编辑模式
私有子搜索和编辑模式_单击()
'将按钮文本修改为"编辑记录"
Me.cmdAddEdit.Caption="编辑记录"
Me.cmdAddEdit.ControlTipText="编辑记录"
'使查找项目编号按钮可见
我。cmdpprojectnumber查找。可见=真
'使导航栏可见
我。法国门。可见=真
'使显示记录条数信息的标签可见
我。lblrecrdnoftool。可见=真
'显示工作表中第2行的数据
lngRow=2
lngLastRow=最后一行(wsproject数据,1)
PopulateUserForm 2
Me.lblRecordNofTotal="在"字符串(lngLastRow)"行中的第"修剪(Str(lngRow))"行"
末端接头
'重置按钮标签颜色
专用子恢复颜色()
我。lblfist。背景色=vbWhite
Me.lblNext.BackColor=vbWhite
Me.lblPrev.BackColor=vbWhite
Me.lblLast.BackColor=vbWhite
末端接头
'激活用户窗体时
私有子用户表单_激活()
'填充组合框
和我在一起。添加项目"分析师1"。添加项目"分析师2"。添加项目"分析师3"。添加项目"分析师4"
以…结尾
和我在一起。添加项目"客户端1"。添加项目"客户端2"。添加项目"客户端3"。添加项目"客户端4"
以…结尾
和我一起国会议员示例。添加项目"样本数量1"。添加项目"样本数量2"。添加项目"样本数量3"。添加项目"样本数量4"
以…结尾
末端接头
'填充用户窗体中的控件
公共子填充用户表单(无限长)
我。txt项目编号=wsproject数据.细胞
我。txt项目名称=WSPROJECt数据.细胞
Me.cboAnalyst=wsProjectData .细胞
Me.cboClient=wsProjectData .细胞
Me.txtDueDate=wsProjectData .细胞
Me.txtPriority=wsProjectData .细胞
我。cbonumbersamples=wsproject数据.细胞
末端接头
在代码中添加了一些注释,供参考。
示例工作簿
代码太长,但很简洁明了,可以作为一个模板,稍作修改即可用于其它输入、查找和编辑的情形。如果你有类似的需求或者想要进一步研究,可以下载示例工作簿。
版权声明:excel怎么添加、查找和编辑数据记录是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。