首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行时错误'13':使用if语句时类型不匹配

运行时错误'13':使用if语句时类型不匹配
EN

Stack Overflow用户
提问于 2021-07-13 23:12:58
回答 1查看 36关注 0票数 0

无论如何,让下面的[]像XXX或[]像YYY部分干净得多?

谢谢,谢谢@Tim Williams,但是我如何改变它的形式:

代码语言:javascript
运行
复制
Sub Only_Choose_Unders()
  ' Only_Choose_Unders Macro
  If ['Lab UP no 360 Chem OPP'!D2] = "1A. Madrid" Or ['Lab UP no 360 Chem OPP'!D2] = "1B. Madrid" Or ['Lab UP no 360 Chem OPP'!D2] = "2A. Barcelona" Or ['Lab UP no 360 Chem OPP'!D2] = "2B. Barcelona" Or ['Lab UP no 360 Chem OPP'!D2] = "3. Valencia" Or ['Lab UP no 360 Chem OPP'!D2] = "4A. Malaga" Or ['Lab UP no 360 Chem OPP'!D2] = "4B. Sevilla" Or ['Lab UP no 360 Chem OPP'!D2] = "5. Bilbao" Or ['Lab UP no 360 Chem OPP'!D2] = "6. Canarias" Or ['Lab UP no 360 Chem OPP'!D2] = "7. Baleares" Or ['Lab UP no 360 Chem OPP'!D2] = "8. NorOeste" Or ['Lab UP no 360 Chem OPP'!D2] = "(Multiple Items)" Then
    With Sheets("Lab UP no 360 Chem OPP").Range("m24:m5000")
        .AutoFilter Field:=8, Criteria1:="<0"
        .AutoFilter Field:=9, Criteria1:="<0"
        .AutoFilter Field:=10, Criteria1:="10", _
         Operator:=xlBottom10Percent
         .AutoFilter Field:=11, Criteria1:="10", _
         Operator:=xlBottom10Percent
    End With
Else
    With Sheets("Lab UP no 360 Chem OPP").Range("m24:m5000")
        .AutoFilter Field:=8, Criteria1:="<0"
        .AutoFilter Field:=9, Criteria1:="<0"
        .AutoFilter Field:=10, Criteria1:="50", _
        Operator:=xlBottom10Percent
        .AutoFilter Field:=11, Criteria1:="50", _
        Operator:=xlBottom10Percent
    End With
 End If
End Sub
EN

回答 1

Stack Overflow用户

发布于 2021-07-13 23:26:42

我会避免使用方括号表示法,并且您需要修改您的检查才能获得正确的结果:

代码语言:javascript
运行
复制
If ['Lab UP no 360 Chem OPP'!D2] Like "1A. Madrid" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "1B. Madrid" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "2A. Barcelona" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "2B. Barcelona" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "3. Valencia" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "4A. Malaga" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "4B. Sevilla" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "5. Bilbao" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "6. Canarias" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "7. Baleares" Or _
   ['Lab UP no 360 Chem OPP'!D2] Like "8. NorOeste" Then

不过,Select Case提供了一个更简单的语法:

代码语言:javascript
运行
复制
Sub Only_Choose_Unders()
    Dim ws As Worksheet, crit
    
    Set ws = ThisWorkbook.Worksheets("Lab UP no 360 Chem OPP")
    Select Case ws.Range("D2").Value
        Case "1A. Madrid", "1B. Madrid", "2A. Barcelona", "2B. Barcelona", _
             "3. Valencia", "4A. Malaga", "4B. Sevilla", "5. Bilbao", _
             "6. Canarias", "7. Baleares", "8. NorOeste"
              crit = "50"
        Case Else: crit = "10"
    End Select
    
    With ws.Range("M24:M5000")
        .AutoFilter Field:=8, Criteria1:="<0"
        .AutoFilter Field:=9, Criteria1:="<0"
        .AutoFilter Field:=10, Criteria1:=crit, Operator:=xlBottom10Items
        .AutoFilter Field:=11, Criteria1:=crit, Operator:=xlBottom10Items
    End With
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68365100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档