继续获取运行时错误' 13':删除工作表的某个部分时类型不匹配

时间:2018-04-13 22:34:24

标签: excel vba excel-vba

我的代码的目的非常简单。它旨在在用户提交表单时隐藏和取消隐藏某些单元格。当用户希望重新开始并一次清除来自多个小区的数据时,他们会遇到运行时错误' 13'类型不匹配。以下是代码,任何人都可以帮忙吗?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And Target.Row = 2 And Target.Value = "Exceptions Reviewer" Then
    Application.Columns("F:G").Select
    Application.Selection.EntireColumn.Hidden = True

End If
If Target.Column = 2 And Target.Row = 2 And Target.Value = "CAT Payouts Tracker Entry" Then
    Application.Columns("F:P").Select
    Application.Selection.EntireColumn.Hidden = True

End If
If Target.Column = 2 And Target.Row = 2 And Target.Value = "CAT Payouts Tracker Supervisor" Then
    Application.Columns("F:P").Select
    Application.Selection.EntireColumn.Hidden = True

End If
If Target.Column = 2 And Target.Row = 2 And Target.Value = "Agent Error Review" Then

    Application.Columns("F:P").Select
    Application.Selection.EntireColumn.Hidden = False
End If
If Target.Column = 2 And Target.Row = 2 And Target.Value = "Agent Error and Exceptions Reviewer" Then

    Application.Columns("F:P").Select
    Application.Selection.EntireColumn.Hidden = False

End If

3 个答案:

答案 0 :(得分:1)

尝试从可能的多细胞靶标中分离B2。

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Cells(2, "B")) Is Nothing Then
        Columns("F:P").EntireColumn.Hidden = False
        Select Case Cells(2, "B").Value2
            Case "Exceptions Reviewer"
                Columns("F:G").EntireColumn.Hidden = True
            Case "CAT Payouts Tracker Entry", _
                 "CAT Payouts Tracker Supervisor", _
                 "Agent Error Review", _
                 "Agent Error and Exceptions Reviewer"
                Columns("F:P").EntireColumn.Hidden = True
            Case Else
                'do nothing
        End Select
    End If
End Sub

答案 1 :(得分:1)

通常,当其中一个单元格包含错误时会发生类型不匹配

#N/A, #VALUE!, #REF!, #DIV/0!, #NUM!, #NAME?, or #NULL!

尝试测试它们

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    With Target.Cells(1)

        If .Column = 2 And .Row = 2 And Not IsError(.Value2) Then

            Select Case .Value2

                Case "Agent Error and Exceptions Reviewer", _
                     "Exceptions Reviewer"

                        Columns("F:G").Hidden = True

                Case "CAT Payouts Tracker Entry", _
                     "CAT Payouts Tracker Supervisor", _
                     "Agent Error Review"

                        Columns("F:P").Hidden = True

            End Select
        End If
    End With
End Sub

答案 2 :(得分:0)

您的代码的翻译可以是以下内容:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$B$2" Then Exit Sub ' exit if changed cell is not "B2" one only

    Select Case Target.value2
        Case "Exceptions Reviewer"
            Columns("F:G").EntireColumn.Hidden = True
        Case "CAT Payouts Tracker Entry", "CAT Payouts Tracker Supervisor"
            Columns("F:P").EntireColumn.Hidden = True
        Case "Agent Error Review", "Agent Error and Exceptions Reviewer"
            Columns("F:P").EntireColumn.Hidden = False
    End Select
End Sub

哪会&#34;累积&#34;隐藏/取消隐藏的列

例如,你需要任何&#34; B2&#34;单元格内容更改为隐藏/取消隐藏相应列,同时取消隐藏所有其他列,然后您将使用:

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address <> "$B$2" Then Exit Sub ' exit if changed cell is not "B2" one only

    Columns("F:P").EntireColumn.Hidden = False ' un-hide all columns for start
    Select Case Target.value2    
        'now hide columns as a consequence of cell B2 content
        Case "Exceptions Reviewer"
            Columns("F:G").EntireColumn.Hidden = True
        Case "CAT Payouts Tracker Entry", "CAT Payouts Tracker Supervisor"
            Columns("F:P").EntireColumn.Hidden = True
    End Select
End Sub