Excel VBA高效办公应用-第十章-高效处理学员资料-Part2 (考勤记录表)
2017-06-19 01:04
435 查看
这个示例的意义在于,当数据量较大时,通过在用户窗体中提供筛选条件,帮助用户快速获取期望数据。
但应为使用多重筛选也能实现同样功能,所以,这里的做法有点鸡肋啊。
Option Explicit
Private Sub ComboBox1_Change()
showall '每次组合框变化都会调用函数showall
End Sub
Private Sub ComboBox2_Change()
showall '每次组合框变化都会调用函数showall
End Sub
Private Sub ComboBox3_Change()
showall '每次组合框变化都会调用函数showall
End Sub
Private Sub UserForm_Activate()
ComboBox1.AddItem "全部月份" '显示所有月份
ComboBox1.AddItem 1 '显示1月的数据
ComboBox1.AddItem 2 '显示2月的数据
ComboBox1.AddItem 3 '显示3月的数据
ComboBox1.AddItem 4 '显示4月的数据
ComboBox2.AddItem "2次及以上的同学" '加入对迟到次数的提示
ComboBox2.AddItem "3次及以上的同学" '加入对迟到次数的提示
ComboBox2.AddItem "不限次数" '加入对迟到次数的提示
ComboBox3.AddItem "2次及以上的同学" '加入对旷课次数的提示
ComboBox3.AddItem "3次及以上的同学" '加入对旷课次数的提示
ComboBox3.AddItem "不限次数" '加入对旷课次数的提示
End Sub
Sub showall()
showmonth '调用showmonth显示相关月份的所有数据
showtimes '调用showtimes显示满足迟到次数的所有数据
showAbsenceTimes '调用showtimes显示满足旷课次数的所有数据
End Sub
Sub showmonth()
'选择所有月份的数据
Range(Cells(1, 1), Cells(33, 13)).Select
'显示所有月份的数据
Selection.EntireRow.Hidden = False
'判断选择了组合框的那一项
Select Case ComboBox1.ListIndex
Case 0 '表示选择了显示全部月份
Case 1 '表示选择了显示1月份
'选择1月份的数据
Range(Cells(12, 1), Cells(33, 13)).Select
'显示1月份的数据
Selection.EntireRow.Hidden = True
Case 2 '表示选择了显示2月份
Range(Cells(1, 1), Cells(11, 13)).Select
Selection.EntireRow.Hidden = True
Range(Cells(21, 1), Cells(33, 13)).Select
Selection.EntireRow.Hidden = True
Case 3 '表示选择了显示3月份
Range(Cells(1, 1), Cells(22, 13)).Select
Selection.EntireRow.Hidden = True
Case Else '选择其它月份
MsgBox "暂时没有其它月份的数据"
End Select
End Sub
Sub showtimes()
Dim i As Integer, Irow As Integer
Dim Inum(3) As Integer '定义数组Inum,用来表示限制的次数
Inum(0) = -1 '什么都不选时表示限制次数为-1
Inum(1) = 2 '选择第1项时表示限制次数为2
Inum(2) = 3 '选择第2项时表示限制次数为3
Inum(3) = -1 '什选择第3项时表示限制次数为-1,也就是不限制次数
'取得当前可见的单元格的行数
Irow = Range("A1").CurrentRegion.Rows.Count
For i = 2 To Irow
'逐个判断迟到次数是否满足选定的条件
If (Cells(i, 12).Value < Inum(ComboBox2.ListIndex + 1)) Then
'不满足的就隐藏
Rows(i).Hidden = True
End If
Next i
End Sub
Sub showAbsenceTimes()
Dim i As Integer, Irow As Integer
Dim Inum(3) As Integer '定义数组Inum,用来表示限制的次数
Inum(0) = -1 '什么都不选时表示限制次数为-1
Inum(1) = 2 '选择第1项时表示限制次数为2
Inum(2) = 3 '选择第2项时表示限制次数为3
Inum(3) = -1 '选择第3项时表示限制次数为-1,也就是不限制次数
'取得当前可见的单元格的行数
Irow = Range("A1").CurrentRegion.Rows.Count
For i = 2 To Irow
'逐个判断旷课次数是否满足选定的条件
If (Cells(i, 13).Value < Inum(ComboBox3.ListIndex + 1)) Then
'不满足的就隐藏
Rows(i).Hidden = True
End If
Next i
End Sub
但应为使用多重筛选也能实现同样功能,所以,这里的做法有点鸡肋啊。
Option Explicit
Private Sub ComboBox1_Change()
showall '每次组合框变化都会调用函数showall
End Sub
Private Sub ComboBox2_Change()
showall '每次组合框变化都会调用函数showall
End Sub
Private Sub ComboBox3_Change()
showall '每次组合框变化都会调用函数showall
End Sub
Private Sub UserForm_Activate()
ComboBox1.AddItem "全部月份" '显示所有月份
ComboBox1.AddItem 1 '显示1月的数据
ComboBox1.AddItem 2 '显示2月的数据
ComboBox1.AddItem 3 '显示3月的数据
ComboBox1.AddItem 4 '显示4月的数据
ComboBox2.AddItem "2次及以上的同学" '加入对迟到次数的提示
ComboBox2.AddItem "3次及以上的同学" '加入对迟到次数的提示
ComboBox2.AddItem "不限次数" '加入对迟到次数的提示
ComboBox3.AddItem "2次及以上的同学" '加入对旷课次数的提示
ComboBox3.AddItem "3次及以上的同学" '加入对旷课次数的提示
ComboBox3.AddItem "不限次数" '加入对旷课次数的提示
End Sub
Sub showall()
showmonth '调用showmonth显示相关月份的所有数据
showtimes '调用showtimes显示满足迟到次数的所有数据
showAbsenceTimes '调用showtimes显示满足旷课次数的所有数据
End Sub
Sub showmonth()
'选择所有月份的数据
Range(Cells(1, 1), Cells(33, 13)).Select
'显示所有月份的数据
Selection.EntireRow.Hidden = False
'判断选择了组合框的那一项
Select Case ComboBox1.ListIndex
Case 0 '表示选择了显示全部月份
Case 1 '表示选择了显示1月份
'选择1月份的数据
Range(Cells(12, 1), Cells(33, 13)).Select
'显示1月份的数据
Selection.EntireRow.Hidden = True
Case 2 '表示选择了显示2月份
Range(Cells(1, 1), Cells(11, 13)).Select
Selection.EntireRow.Hidden = True
Range(Cells(21, 1), Cells(33, 13)).Select
Selection.EntireRow.Hidden = True
Case 3 '表示选择了显示3月份
Range(Cells(1, 1), Cells(22, 13)).Select
Selection.EntireRow.Hidden = True
Case Else '选择其它月份
MsgBox "暂时没有其它月份的数据"
End Select
End Sub
Sub showtimes()
Dim i As Integer, Irow As Integer
Dim Inum(3) As Integer '定义数组Inum,用来表示限制的次数
Inum(0) = -1 '什么都不选时表示限制次数为-1
Inum(1) = 2 '选择第1项时表示限制次数为2
Inum(2) = 3 '选择第2项时表示限制次数为3
Inum(3) = -1 '什选择第3项时表示限制次数为-1,也就是不限制次数
'取得当前可见的单元格的行数
Irow = Range("A1").CurrentRegion.Rows.Count
For i = 2 To Irow
'逐个判断迟到次数是否满足选定的条件
If (Cells(i, 12).Value < Inum(ComboBox2.ListIndex + 1)) Then
'不满足的就隐藏
Rows(i).Hidden = True
End If
Next i
End Sub
Sub showAbsenceTimes()
Dim i As Integer, Irow As Integer
Dim Inum(3) As Integer '定义数组Inum,用来表示限制的次数
Inum(0) = -1 '什么都不选时表示限制次数为-1
Inum(1) = 2 '选择第1项时表示限制次数为2
Inum(2) = 3 '选择第2项时表示限制次数为3
Inum(3) = -1 '选择第3项时表示限制次数为-1,也就是不限制次数
'取得当前可见的单元格的行数
Irow = Range("A1").CurrentRegion.Rows.Count
For i = 2 To Irow
'逐个判断旷课次数是否满足选定的条件
If (Cells(i, 13).Value < Inum(ComboBox3.ListIndex + 1)) Then
'不满足的就隐藏
Rows(i).Hidden = True
End If
Next i
End Sub
相关文章推荐
- Excel VBA高效办公应用-第五章-销售数据的处理与分析-Part2(多条件筛选及判定)
- Excel VBA高效办公应用-第十章-高效处理学员资料-Part1 (成绩排名)
- Excel VBA高效办公应用-第六章-客户资料管理-Part2 (简单查询功能的VBA实现及记录单功能)
- Excel VBA高效办公应用-第十三章-工资条与工资查询-Part2 (工资条查询)
- Excel VBA高效办公应用-第九章-VBA文秘办公技巧-Part2(查找同名同姓的员工)
- Excel VBA高效办公应用-第四章-用VBA处理市场调查问卷数据
- Excel VBA高效办公应用-第十二章-工资表的录入与工资表的建立-Part2 (建立工资表)
- Excel VBA高效办公应用-第七章-VBA财务报表分析-Part2 (资产负债表分析)
- Excel VBA高效办公应用-第七章-VBA财务报表分析-Part3 (现金流量表分析)
- Excel VBA高效办公应用-第十六章-VBA高效文件操作(同时给多个工作簿加解密)
- Excel VBA高效办公应用-第十五章-VBA在生产预测与经营分析中的应用
- Excel VBA高效办公应用-第十三章-工资条与工资查询-Part1 (制作工资条)
- Excel VBA高效办公应用-第九章-VBA文秘办公技巧-Part1 (每日行程安排提醒)
- Excel VBA高效办公应用-第二章-Excel VBA编辑基础-Part2(VBA的数据类型)
- Excel VBA高效办公应用-第十七章-用户权限管理系统
- Excel VBA高效办公应用-第十一章-教师员工数据管理-Part3 (排座位小程序)
- Excel VBA高效办公应用-第八章-商品销售决策与分析-Part1 (商品销售方式决策)
- Excel VBA高效办公应用-第八章-商品销售决策与分析-Part2 (商品分期付款决策)
- Excel VBA高效办公应用-第三章-使用Excel的内置函数
- Excel VBA高效办公应用-第十四章-Excel图书管理系统