建筑网站建设/关键词排名查询官网
这个示例的意义在于,当数据量较大时,通过在用户窗体中提供筛选条件,帮助用户快速获取期望数据。
但应为使用多重筛选也能实现同样功能,所以,这里的做法有点鸡肋啊。
Option ExplicitPrivate Sub ComboBox1_Change()showall '每次组合框变化都会调用函数showall
End SubPrivate Sub ComboBox2_Change()showall '每次组合框变化都会调用函数showall
End SubPrivate Sub ComboBox3_Change()showall '每次组合框变化都会调用函数showall
End SubPrivate 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.ListIndexCase 0 '表示选择了显示全部月份Case 1 '表示选择了显示1月份'选择1月份的数据Range(Cells(12, 1), Cells(33, 13)).Select'显示1月份的数据Selection.EntireRow.Hidden = TrueCase 2 '表示选择了显示2月份Range(Cells(1, 1), Cells(11, 13)).SelectSelection.EntireRow.Hidden = TrueRange(Cells(21, 1), Cells(33, 13)).SelectSelection.EntireRow.Hidden = TrueCase 3 '表示选择了显示3月份Range(Cells(1, 1), Cells(22, 13)).SelectSelection.EntireRow.Hidden = TrueCase Else '选择其它月份MsgBox "暂时没有其它月份的数据"End Select
End Sub
Sub showtimes()
Dim i As Integer, Irow As Integer
Dim Inum(3) As Integer '定义数组Inum,用来表示限制的次数Inum(0) = -1 '什么都不选时表示限制次数为-1Inum(1) = 2 '选择第1项时表示限制次数为2Inum(2) = 3 '选择第2项时表示限制次数为3Inum(3) = -1 '什选择第3项时表示限制次数为-1,也就是不限制次数'取得当前可见的单元格的行数Irow = Range("A1").CurrentRegion.Rows.CountFor i = 2 To Irow'逐个判断迟到次数是否满足选定的条件If (Cells(i, 12).Value < Inum(ComboBox2.ListIndex + 1)) Then'不满足的就隐藏Rows(i).Hidden = TrueEnd IfNext i
End Sub
Sub showAbsenceTimes()
Dim i As Integer, Irow As Integer
Dim Inum(3) As Integer '定义数组Inum,用来表示限制的次数Inum(0) = -1 '什么都不选时表示限制次数为-1Inum(1) = 2 '选择第1项时表示限制次数为2Inum(2) = 3 '选择第2项时表示限制次数为3Inum(3) = -1 '选择第3项时表示限制次数为-1,也就是不限制次数'取得当前可见的单元格的行数Irow = Range("A1").CurrentRegion.Rows.CountFor i = 2 To Irow'逐个判断旷课次数是否满足选定的条件If (Cells(i, 13).Value < Inum(ComboBox3.ListIndex + 1)) Then'不满足的就隐藏Rows(i).Hidden = TrueEnd IfNext i
End Sub