Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 宏出错,因为autofilter没有';我没有价值_Excel_Vba_Autofilter - Fatal编程技术网

Excel 宏出错,因为autofilter没有';我没有价值

Excel 宏出错,因为autofilter没有';我没有价值,excel,vba,autofilter,Excel,Vba,Autofilter,我编写了一个宏,根据手动输入的用户设置调用工作表中的一些记录。我使用的代码如下所示: Dim sh As Worksheet Set sh = ThisWorkbook.Sheets("Serial Number Data") Sheets("Serial Number Data").Select sh.UsedRange.AutoFilter 7, Range("project").Value sh.UsedRange.AutoFilter 8, Range("platform").Val

我编写了一个宏,根据手动输入的用户设置调用工作表中的一些记录。我使用的代码如下所示:

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("Serial Number Data")

Sheets("Serial Number Data").Select

sh.UsedRange.AutoFilter 7, Range("project").Value
sh.UsedRange.AutoFilter 8, Range("platform").Value
sh.UsedRange.AutoFilter 9, Range("equipment").Value

问题是这些过滤器的组合并不存在。当用户为不存在的组合输入值时,宏将出错。如果值无效,是否有方法在宏中设置标志并发送错误消息。我已经考虑过为输入设置相关过滤器,以消除前端的错误,但可能需要考虑100种组合。

您可以使用
应用程序。CountIfs
来确定这些值的组合是否存在:

With sh.UsedRange
    If Application.CountIfs(.Columns(7), sh.Range("project").Value, _
                            .Columns(8), sh.Range("platform").Value, _
                            .Columns(9), sh.Range("equipment").Value) = 0 Then
         ' Combination not found
    End If
End With

我找到了一个简单的方法来解决这个问题。宏的下一个操作是剪切并粘贴到不同的工作表。我发现它走了这么远,没有发生错误。当然没有数据,所以我使用了If工作表(“myrange”).Range(“b13”).Value=”“,然后设置一个错误标志并结束宏