您的位置:首页 > 编程语言 > VB

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐