手机版

excel怎么添加、查找和编辑数据记录

时间:2021-09-19 来源:互联网 编辑:宝哥软件园 浏览:

在超过中,我已经创建了一个输入数据的用户窗体,用于在工作记录工作表中添加新数据记录。最近,老板提出了新的需求,要通过该用户窗体能够编辑数据记录,增强其功能。

这是我们在使用超过编程时经常会遇到的问题。虽说直接在工作表中添加数据没有什么不好的,但就是有很多人喜欢使用自已设计的界面输入数据,包括我自已。在设计好输入数据界面后,更进一步增强界面的功能,可以查找数据,对找到的数据进行编辑并将修改更新到工作表中。如下所示。

用户窗体界面设计

存储数据的工作表如下所示。

根据工作表数据结构,设计用户窗体如下所示。

其中,用于导航的四个标签按钮放置在一个名为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或者邮箱删除。