【发布时间】:2022-03-15 04:09:40
【问题描述】:
以下 VBA 代码的 sn-p 尝试在大约 80k 行长的 excel 列上执行简单的 If 语句。发生以下错误。
运行时错误“-2147417848 (80010108)”: 对象“范围”的方法“值”失败
这里出了什么问题?
Dim r As Long
Dim lastrow As Long
lastrow = Range("A" & Rows.Count).End(xlUp).Row
For r = 2 To lastrow
If InStr(Range("I" & r).Text, "WH") Then
Range("Z" & r).Value = "O"
ElseIf InStr(Range("I" & r).Text, "MOD") Then
Range("Z" & r).Value = "M"
ElseIf InStr(Range("I" & r).Text, "VER") Then
Range("Z" & r).Value = "V"
ElseIf InStr(Range("I" & r).Text, "WT") Then
Range("Z" & r).Value = "WT"
ElseIf InStr(Range("E" & r).Text, "OIL") Then
Range("Z" & r).Value = "OIL"
Else: Range("Z" & r).Value = "N"
End If
Next r
【问题讨论】:
-
错误出现在哪一行?不是使用
.Text,而是使用.Value得到同样的错误? -
我认为需要更多细节。这段代码在我做的简单测试中有效(没有错误)。
-
可能要考虑
case声明。 -
当前工作表是您正在搜索的工作表吗?当您收到错误消息时,
r的值是多少? -
真的需要 InStr 吗? MOD、VER、OIL 等是整个单元格还是单元格内较长字符串的一部分?