今天我们继续来记录一下供应商增删改查工具,
增加供应商这一部分的一些知识点。
上两篇主要讲了如何引用Sheet和如何制作交互的界面。
附上上两篇的链接,大家可以参考一下。
VBA 制作供应商增删改查 小工具 第1篇 Sheet的引用
VBA 制作供应商增删改查 小工具 第2篇 如何画出交互界面
其实这部分功能十分简单,只需要写几个函数就可以。
不推荐将所有功能都写在一个sub过程中,这样在后期维护的时候会显得比较麻烦。
推荐将每个功能拆解成一个个非常小的函数。
举个例子。比如增加供应商这个功能。就像下面这个动图一样的:
这边也只有涉及2个核心的函数。
一个是添加供应商函数。取名叫AddCompany
一个是合法验证的函数。取名叫CheckIfLegal
另外这边还加了一个Init的函数,来初始化刚开始的变量。
然后这边的按钮,我们需要为它写上click事件。
这里我们先记录一下添加这部分最核心的功能,
力求用一张图来表示清楚,大家可以保存下来以后参考。
AddCompany函数需要接受4个参数。
那这4个参数是从哪里来的呢?就是用户前台填写的4个参数。
所以这边需要定义一下这几个变量,
我选择定义在函数外边作为公有变量,
这样各个函数都可以访问这些值。
如图所示
其实这两部分结束之后,基础的功能就都有了。
只是这边我们需要添加一道验证,
因为不可能用户填了一个空的信息,我们也提示成功。
所以这边加了一个CheckIfLegal函数。
这边主要验证两个,一个是所填信息是否为空,另外一个是是否重复添加。
下面贴上具体的代码,大家可以复制测试一下:
Option Explicit
Private Sub add_btn_Click()
Call Init
If CheckIfLegal(company_name, bank_name, bank_No, contract_No) = True Then
Call AddCompany(company_name, bank_name, bank_No, contract_No)
End If
End Sub
Private Sub detail_btn_Click()
Sheet2.Activate
End Sub
Option Explicit
Public company_name As String
Public bank_name As String
Public bank_No As String
Public contract_No As String
Public company_repeat As Range
Public Function AddCompany(company_name As String, bank_name As String, bank_No As String, contract_No As String)
Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Value = company_name
Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(0, 1).Value = bank_name
Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(0, 2).Value = bank_No
Sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(0, 3).Value = contract_No
MsgBox ('供应商:' & company_name & Chr(13) & _
'开户行:' & bank_name & Chr(13) & _
'银行账号:' & bank_No & Chr(13) & _
'合同号:' & contract_No & Chr(13) & _
'【添加成功】')
End Function
Public Function CheckIfLegal(company_name As String, bank_name As String, bank_No As String, contract_No As String) As Boolean
If company_name = '' Then
MsgBox '请填写公司名', vbCritical, 'ERROR'
CheckIfLegal = False
Exit Function
ElseIf bank_name = '' Then
MsgBox '请填写开户银行', vbCritical, 'ERROR'
CheckIfLegal = False
Exit Function
ElseIf bank_No = '' Then
MsgBox '请填写开户账号', vbCritical, 'ERROR'
CheckIfLegal = False
Exit Function
ElseIf contract_No = '' Then
MsgBox '请填写合同号', vbCritical, 'ERROR'
CheckIfLegal = False
Exit Function
End If
If Application.WorksheetFunction.CountIf(company_repeat, company_name) > 0 Then
MsgBox '供应商信息已存在,请勿重复添加!', vbCritical, 'ERROR'
CheckIfLegal = False
Exit Function
End If
CheckIfLegal = True
End Function
Public Function Init()
company_name = Sheet1.company_tbx.Text
bank_name = Sheet1.bank_tbx.Text
bank_No = Sheet1.bankNum_tbx.Text
contract_No = Sheet1.contr_tbx.Text
Set company_repeat = Sheet2.Range(Sheet2.Cells(1, 1), Sheet2.Cells(1, 1).End(xlDown))
End Function
联系客服