获取类型不匹配错误

时间:2016-05-23 18:20:43

标签: vba excel-vba excel

我收到运行时错误13' Type Mismatch'在这块代码上,我无法弄清楚为什么。我之前没有使用过Mid()函数,那是抛出错误的行。初学者,任何和所有帮助赞赏。

我想要行,如果要检查字符串中的第三个字符是否等于4.如果你知道一个更好的方法,我也会对此持开放态度。

For k = 2 To NRow
    If Mid(SummarySheet.Range("B2:B" & k), 3, 3) = 4 Then
        SummarySheet.Range("B" & k & ":D" & k).Cut
        SummarySheet.Range("R" & k & ":T" & k).PasteSpecial xlPasteValues
    End If
Next

2 个答案:

答案 0 :(得分:3)

我相信这就是你要做的事情:

您需要向后迭代数据。

Mid一次只允许一个单元格。第三个标准是长度,所以它应该是1.

您可以设置值,然后从集中删除数据。

For k = Nrow To 2 Step -1
    If Mid(SummarySheet.Range("B" & k), 3, 1) = "4" Then
        SummarySheet.Range("R" & k & ":T" & k).Value = SummarySheet.Range("B" & k & ":D" & k).Value
        SummarySheet.Range("B" & k & ":D" & k).Delete xlshiftUp
    End If
Next

现在,如果您只想清除值并在数据中保留一个空行,请使用:

For k = Nrow To 2 Step -1
    If Mid(SummarySheet.Range("B" & k), 3, 1) = "4" Then
        SummarySheet.Range("R" & k & ":T" & k).Value = SummarySheet.Range("B" & k & ":D" & k).Value
        SummarySheet.Range("B" & k & ":D" & k).Clear
    End If
Next

答案 1 :(得分:2)

Mid()用于获取单个文本值的子字符串。由于您在阵列上尝试此操作,因此无法使用。我不完全确定这是你想要的,但这不应该引发错误:

If Mid(SummarySheet.Range("B" & k).Value, 3, 1) = "4" Then

请注意,该引用适用于单个单元格,而#34; 4"引用它表明它是一个字符串。我将你的最后一个参数改为1,因为你正在寻找一个角色。