Excel AutoFilter范围由组合框设置?

时间:2016-01-14 19:09:06

标签: excel-vba filter combobox vba excel

我目前正在开发一个工作表的熊,该工作表旨在使用http://peltiertech.com/excel/chartshowto/panelunevenscales.html详细介绍的后门技术显示同一时间间隔内各个参数的变化。

基本上,我将它设置为模板,其中5列数据(行长度不同)可以从第12行开始粘贴到AF列中。我想要过滤的时间列在A列中我基本上想要这样做,以便2个组合框(ComboBox1和ComboBox2)可用于设置上限和下限时间并过滤掉任何其他数据。我希望我可以把它变成一个动态图表,它将调整x轴的大小以仅显示所选的时间段。

我还是比较新用VBA而且我做了很多搜索,我唯一能找到的东西似乎与http://www.ozgrid.com/forum/showthread.php?t=54376回答的问题有关。我尝试了以下代码并不断收到错误:

Sub TimeFilter()

Crit1 = Format(ComboBox1, "0")

Crit2 = Format(ComboBox2, "0")

.AutoFilterMode = False

.Range("A12:L10000").AutoFilter

.Range("A12:L10000").AutoFilter Field:=1, Criteria:=">=" & crit1, Operator:=xlAnd, Criteria2:="<=" & crit2

End Sub

有关为何可能无效的任何想法?任何帮助或指导表示赞赏!

**** **** EDIT

以下是我正在使用的电子表格的更新完整代码,使用TimeFilter脚本,我得到“运行时错误'1004',Range类的AutoFilter方法失败”: **我过滤的时间是0.2秒,格式为MM:SS.X。

Sub CreateComboBoxes()

Dim Cell As Range
Dim sht As Worksheet

Set sht = ThisWorkbook.Worksheets("Sheet1")

    Set Cell = Range("I8")  
    With Cell
        sht.DropDowns.Add(.Left, .Top, .Width, .Height).Name = "ComboBox1"
    End With

    Set Cell = Range("K8")    
    With Cell
        sht.DropDowns.Add(.Left, .Top, .Width, .Height).Name = "ComboBox2"
    End With

End Sub

Sub TimeFilter()

Crit1 = Format(ComboBox1, "0")
Crit2 = Format(ComboBox2, "0")

Worksheets("Sheet1").AutoFilterMode = False
Worksheets("Sheet1").Range("A12:L10000").AutoFilter
Worksheets("Sheet1").Range("A12:L10000").AutoFilter Field:=1,Criteria1:=">=" & Crit1, Operator:=xlAnd, _
Criteria2:="<=" & Crit2

End Sub

1 个答案:

答案 0 :(得分:0)

我在前言中说明这不是一个答案,而是使用WithEnd With语句的解释。评论部分不提供正确执行此操作所需的格式化工具

WithEnd With语句可以帮助您一遍又一遍地输入相同的内容。

    ThisWorkbook.Worksheets("Sheet1").UsedRange.Font.ColorIndex = 3
    ThisWorkbook.Worksheets("Sheet1").UsedRange.Font.Bold = True
    ThisWorkbook.Worksheets("Sheet1").UsedRange.Font.Size = 15
    ThisWorkbook.Worksheets("Sheet1").UsedRange.Font.Name = "Times new Roman"

也可以写成

    With ThisWorkbook.Worksheets("Sheet1").UsedRange.Font
        .ColorIndex = 3
        .Bold = True
        .Size = 15
        .Name = "Times new Roman"
    End With

你会注意到&#34;。&#34;在with end with语句之间的行前面,这意味着它应该被读作With语句设置的继续。