产品售后管理系统制作

本文教程以最近发布的《产品售后管理系统》为例进行讲解。

1、基础数据

1.1 首先按下图所示创建5个工作表,分别命名为index、售后信息查询、售后信息录入、数据源、下拉信息。

1.2 在下拉信息创建如下4个表。

1.3 按下图所示顺序,选中表—公式—根据所选内容创建定义名称—首行—确定。将所有表添加到名称管理器里。

1.4 在数据源工作表中创建下图的表格。并任意输入两行数据。

1.5 在辅助列输入公式”=MONTH(G3)”,自动读取当前行日期的月份,方便后面按月查询。

2、售后信息录入

2.1 如下图所示,在售后信息录入的工作表中创建如下内容。

2.2 添加按钮:选择开发工具—插入按钮。将插入的按钮复制拖动到如下图位置,并分别命名为“录入”,“清除”,“单号清零”。

2.3 单号自动获取:

2.3.1 在“G4”单元格输入公式:=IF(MONTH(K4)<10,"0"&MONTH(K4),MONTH(K4))

2.3.2 将“I4”单元格输入1,并在“E6”单元格输入公式:="RE"&RIGHT(YEAR(K4),2)&G4&I4,这样便可根据日期自动生产售后单号,录入数据后通过更新“I4”数字便可实现自动更新单号。

2.4 录入按钮代码:插入模块。依次选择 开发工具—Visual Basic—右键单击空白处—插入—模块。

Sub 信息录入()

2.5 在模块1中输入如下代码:(红色字体为代码注释)

Sub 数据录入()(创建名为数据录入的宏)

If Sheet1.Cells(8, 5) = "" Or Sheet1.Cells(8, 8) = "" Or Sheet1.Cells(8, 11) = "" Then

MsgBox "请先录入一条信息!"

Exit Sub

End If

(以上代码为判断第一行数据是否有输入,如未输入则退出宏)

a = Sheet2.Cells(Rows.Count, 1).End(xlUp)(2, 1).Row

(以上代码是获取数据源表格中第一列最后一行非空单元格的行号,并将获取的行号下移一行)

Dim i As Integer(定义变量i)

For i = 8 To 17(i为录入数据的行号)

If Sheet1.Cells(i, 5) <> "" Then (判断i行是否为空值,不为空值则将下列数据录入到数据库)

Sheet2.Cells(a, 1) = Sheet1.Cells(6, 5) '单号

Sheet2.Cells(a, 2) = Sheet1.Cells(i, 5) '编码

Sheet2.Cells(a, 3) = 1 '数量

Sheet2.Cells(a, 4) = Sheet1.Cells(i, 8) '现象

Sheet2.Cells(a, 5) = Sheet1.Cells(i, 11) '措施

Sheet2.Cells(a, 6) = Sheet1.Cells(6, 8) '负责人

Sheet2.Cells(a, 7) = Sheet1.Cells(4, 11) '日期

Sheet2.Cells(a, 9) = Sheet1.Cells(i, 14) '客户

a = a + 1

End If

Next

Sheet1.Cells(4, 9) = Sheet1.Cells(4, 9) + 1(“H4”单元格加1,售后单号更新)

MsgBox "售后信息录入成功!"

Sheet1.Range("e8:e17") = ""

Sheet1.Range("h8:h17") = ""

Sheet1.Range("n8:n17") = ""

Sheet1.Range("k8:k17") = ""

Sheet1.Range("H6") = ""

(清除录入框的数据)

End Sub

2.5 输入好代码后,就录入按钮的宏指定到刚刚创建的宏下,选择录入按钮,右键指定宏,选择刚刚创建的宏名“数据录入”即可。

2.6 清除按钮代码:输入代码后按上面的方式将清除按钮指定到数据清除宏下即可。

Sub 数据清除()

Sheet1.Range("e8:e17") = ""

Sheet1.Range("h8:h17") = ""

Sheet1.Range("n8:n17") = ""

Sheet1.Range("k8:k17") = ""

Sheet1.Range("H6") = ""

End Sub

2.7 单号清零代码:输入代码后按上面的方式将单号清零指定到单号清零宏下即可。

Sub 单号清零()

Sheet1.Cells(4, 9) = 1

End Sub

2.8 创建下拉选择:按下图方式,点击需要下拉选择信息的单元格一次点击:数据—数据验证—数据验证

2.9 选择序列,并输如=indirect($G$8),按同样的方法将所有需要创建下拉选择的单元格是指完成。

2.10 返回按钮超链接:单击画好的形状图标,选择链接,选择“本文档中的位置”,点击“index”,再点击确定即可。如下图所示。

2.11 到这里,售后录入界面制作完成了,最后可将 “G4”“I4”单元格,将字体颜色设置成背景色(如下图所示)。

3、售后信息查询

3.1 售后信息查询界面制作:按下图制作售后信息查询界面,并按前面的方法制作三个按钮拖放到对应位置。

3.2 增加数字调节按钮。按下图所示,并将数字调节按钮拖放到对应位置。

3.3 按下图所示,设置数字调节按钮的属性:点击数字调节按钮—设置控件格式—然后按红框区域的数值设置好后点击确定即可。

3.4 页码设置:在“K13”单元格输入公式:=IF(K8=1,"第 1 页","第 "&LEFT(K8,1)+RIGHT(K8,1)&" 页"),这样便可根据数字调节按钮自动更新页码。

3.5 在月份后面的查询按钮输入代码:将代码写在模块2中。

3.5.1 代码及注释(红色字为代码注释)

Sub 月份查询¯()

If Sheet4.Cells(6, 5) = "" Then

MsgBox "请先输入月份"

Exit Sub

End If

(判断月份输入框是否为空,为空则退出宏,并弹窗提醒)

a = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row

(获取数据库第一列最后一行非空值的行号)

Sheet4.Range("d9:j18") = ""

Sheet4.Range("K8") = 1

(清除显示查询信息框的内容)

Dim i, k As Integer

k = 9

For i = a To 3 Step -1

If Sheet4.Cells(6, 5) = Sheet2.Cells(i, 8) Then

(判断月份输入框的值是否与数据库辅助列月的内容一样,一样的话则执行下列数据读取代码)

Sheet4.Cells(k, 4) = Sheet2.Cells(i, 1)

Sheet4.Cells(k, 5) = Sheet2.Cells(i, 2)

Sheet4.Cells(k, 6) = Sheet2.Cells(i, 4)

Sheet4.Cells(k, 7) = Sheet2.Cells(i, 5)

Sheet4.Cells(k, 8) = Sheet2.Cells(i, 6)

Sheet4.Cells(k, 9) = Sheet2.Cells(i, 9)

Sheet4.Cells(k, 10) = Sheet2.Cells(i, 7)

k = k + 1

End If

If k > 18 Then i = 3(信息读取到18行跳出循环)

Next

End Sub

3.5.2 查询代码录入好后将查询按钮指定到对应宏下即可。

3.5.3 翻页显示代码(下面有两个宏,分别为“月份翻阅查询”和“第二页”)主要是通过数字调节按钮的数字大小来执行对应的宏。由于数据读取的代码与前面的类似,这里我就不再详细解释。然后翻页显示的逻辑主要是通过判断“K8”单元格的值,将查询到的数据根据“K8”单元格的值进行对应显示。详细代码如下所示,如有疑问可在评论区留言,我看到后会及时回复。

Sub 月份翻页查询¯()

a = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row

Sheet4.Range("d9:j18") = ""

Dim i, b, d As Integer

d = 0

For i = a To 3 Step -1

If Sheet4.Cells(6, 5) = Sheet2.Cells(i, 8) Then

b = i

d = d + 1

Sheet4.Range("k6") = b

End If

If d < 11 And Sheet4.Range("k8") < 11 Then

Call第二页³

Exit Sub

End If

If d >= 11 And Sheet4.Range("k8") >= 11 And Sheet4.Range("k8") < 21 Then

Call 第二页

Exit Sub

End If

If d >= 21 And Sheet4.Range("k8") >= 21 And Sheet4.Range("k8") < 31 Then

Call 第二页

Exit Sub

End If

If d >= 31 And Sheet4.Range("k8") >= 31 And Sheet4.Range("k8") < 41 Then

Call 第二页

Exit Sub

End If

If d >= 41 And Sheet4.Range("k8") >= 41 And Sheet4.Range("k8") < 51 Then

Call 第二页

Exit Sub

End If

If d >= 51 And Sheet4.Range("k8") >= 51 And Sheet4.Range("k8") < 61 Then

Call第二页

Exit Sub

End If

If d >= 61 And Sheet4.Range("k8") >= 61 And Sheet4.Range("k8") < 71 Then

Call 第二页

Exit Sub

End If

If d >= 71 And Sheet4.Range("k8") >= 71 And Sheet4.Range("k8") < 81 Then

Call 第二页

Exit Sub

End If

If d >= 81 And Sheet4.Range("k8") >= 81 And Sheet4.Range("k8") < 91 Then

Call 第二页

Exit Sub

End If

If d >= 91 And Sheet4.Range("k8") >= 91 Then

Call第二页³

Exit Sub

End If

Next

End Sub

Sub 第二页()

Dim i, k As Integer

k = 9

a = Sheet4.Range("k6")

Sheet4.Range("d9:j18") = ""

For i = a To 3 Step -1

If Sheet4.Cells(6, 5) = Sheet2.Cells(i, 8) Then

Sheet4.Cells(k, 4) = Sheet2.Cells(i, 1)

Sheet4.Cells(k, 5) = Sheet2.Cells(i, 2)

Sheet4.Cells(k, 6) = Sheet2.Cells(i, 4)

Sheet4.Cells(k, 7) = Sheet2.Cells(i, 5)

Sheet4.Cells(k, 8) = Sheet2.Cells(i, 6)

Sheet4.Cells(k, 9) = Sheet2.Cells(i, 9)

Sheet4.Cells(k, 10) = Sheet2.Cells(i, 7)

k = k + 1

End If

If k > 18 Then i = 3

Next

End Sub

3.6 条码查询按钮代码如下所示,这里代码与前面解释的类似,也不再详细注释,有疑问可在评论区留言。

Sub 条码查询¯()

If Sheet4.Cells(6, 8) = "" Then

MsgBox "请先输入产品条码"

Exit Sub

End If

Sheet4.Range("K8") = 1

a = Sheet2.Cells(Rows.Count, 1).End(xlUp).Row

Sheet4.Range("d9:j18") = ""

Dim i, k As Integer

k = 9

For i = a To 3 Step -1

If Sheet4.Cells(6, 8) = Sheet2.Cells(i, 2) Then

Sheet4.Cells(k, 4) = Sheet2.Cells(i, 1)

Sheet4.Cells(k, 5) = Sheet2.Cells(i, 2)

Sheet4.Cells(k, 6) = Sheet2.Cells(i, 4)

Sheet4.Cells(k, 7) = Sheet2.Cells(i, 5)

Sheet4.Cells(k, 8) = Sheet2.Cells(i, 6)

Sheet4.Cells(k, 9) = Sheet2.Cells(i, 9)

Sheet4.Cells(k, 10) = Sheet2.Cells(i, 7) '

k = k + 1

End If

If k > 18 Then i = 3

Next

End Sub

3.7 清除数据代码:

Sub清除数据()

Sheet4.Range("d9:j18") = ""

Sheet4.Range("e6") = ""

Sheet4.Range("h6") = ""

Sheet4.Range("K8") = 1

End Sub

3.8 将所有代码录入好后,并将对应按钮指定到对应宏即可。

4、主界面制作:按下图所示在主界面用图形按钮制作两个按钮,并输入内容。用超链接的方式链接到对应页面即可(超链接方式见本文2.10节)制作完主界面后此系统就完成了。

结语:由于篇幅限制,本次的分享就到这里,由于涉及的知识点较多,所以有些地方讲解不是很细。如果有疑问可以在评论区留言,小编看到了会及时回复的。有兴趣的可以结合作品同步学习,如有分享不到位的地方还请谅解!