在Excel中,我已经创建了一个输入数据的用户窗体,用于在工作记录工作表中添加新数据记录 。最近,老板提出了新的需求,要通过该用户窗体能够编辑数据记录,增强其功能 。
这是我们在使用Excel编程时经常会遇到的问题 。虽说直接在工作表中添加数据没有什么不好的,但就是有很多人喜欢使用自已设计的界面输入数据,包括我自已 。在设计好输入数据界面后,更进一步增强界面的功能,可以查找数据,对找到的数据进行编辑并将修改更新到工作表中 。如下所示 。
文章插图
用户窗体界面设计
存储数据的工作表如下所示 。
文章插图
根据工作表数据结构,设计用户窗体如下所示 。
文章插图
其中,用于导航的4个标签按钮放置在一个名为fraNavigate的框架控件中 。
编写代码
通用代码
在标准模块中,输入下面的代码:
‘ API声明
#If VBA7 And Win64 Then
Public Declare PtrSafe Sub Sleep Lib”kernel32″ (ByVal dwMilliseconds As LongPtr)
#Else
Public Declare Sub Sleep Lib”kernel32″ (ByVal dwMilliseconds As Long)
#End If
‘ 常量声明
Public Const MOUSE_DOWN_SLEEP =25
‘ 全局变量声明
Public blnFormComplete AsBoolean
Public blnMouseDown As Boolean
Public strNotCompleted AsString
‘ 代表消息框信息的变量声明
Public intResponse As Integer
Public lngStyle As Long
Public strInput As String
Public strMsg As String
Public strTitle As String
‘与工作表行数相关的变量声明
Public lngLastRow As Long
Public lngRow As Long
Public lngMatchRow As Long
‘获取工作表中最后的数据行
Public Function LastRow( _
objWorkSheetFindLastRow As Worksheet, _
intColFindLastRow As Integer) As Long
With objWorkSheetFindLastRow
LastRow = .Cells(.Rows.Count, _
intColFindLastRow).End(xlUp).Row
End With
End Function
用户窗体模块代码
在用户窗体模块中,输入下面的代码:
‘清空用户窗体中的数据
Private Sub ClearUserForm()
Me.txtProjectNumber = “”
Me.txtProjectName = “”
Me.cboAnalyst = “”
Me.cboClient = “”
Me.txtDueDate = “”
Me.txtPriority = “”
Me.cboNumberSamples = “”
End Sub
‘添加记录
Private Sub cmdAddEdit_Click()
‘添加记录
If Me.cmdAddEdit.Caption = “添加记录” Then
‘检查所有的内容是否都已填写.
blnFormComplete = True
strNotCompleted = “”
If Me.txtProjectNumber = “”Then
blnFormComplete = False
strNotCompleted = “项目编号 :” & vbCrLf
End If
If Me.txtProjectName = “”Then
blnFormComplete = False
strNotCompleted = strNotCompleted& “项目名称 :” & vbCrLf
End If
If Me.cboAnalyst = “” Then
blnFormComplete = False
strNotCompleted = strNotCompleted& “分析人 :” & vbCrLf
End If
If Me.cboClient = “” Then
blnFormComplete = False
strNotCompleted = strNotCompleted& “客户 :” & vbCrLf
End If
If Me.txtDueDate = “” Then
blnFormComplete = False
strNotCompleted = strNotCompleted& “截止日期 :” & vbCrLf
End If
If Me.txtPriority = “” Then
推荐阅读
- 替换excel工作表中图片怎么保持图片位置和大小不变?
- 淘宝新店怎么做单量?不做单如何提升基础单量?
- 淘宝回复买家怎么发图片?客服如何接待客户?
- 淘宝新开店铺怎么引流量?引流推广怎么做?
- 淘宝精准人群怎么做?如何设置?
- 淘宝代付怎么操作不了?要注意什么?
- 淘宝开店后没流量怎么办?如何提高流量?
- 触怎么组词
- 超级推荐冷启动需要多久?怎么低价引流?
- 龟头有红点是怎么回事