所以我知道问题是什么以及导致它的原因,我只是不知道如何解决它。我什至问过 chatGPT,但机器人并不像他们想象的那么聪明。无论如何..
基本上下面的脚本工作没有.Offset line,这是我坚持的。为了不让您感到无聊,该脚本会在电子表格中列出 Ipad 和平板电脑,然后找到没有 SIM 卡的那些。
现在有了预期的结果,我现在需要向后偏移 2-3 列,并将 D & E 的结果更改为“TEST”等。问题是下面的代码针对 G 列运行,并且要使偏移量起作用意味着从 (A:T) 扩展。这打破了下面的一切,现在脚本失去了焦点并且不知道要过滤什么。
我知道要么设置范围需要更改,要么我需要以不同的方式处理偏移量而不会失去焦点和意外更改未过滤的行。
有什么想法吗?谢谢。
Sub FilterOut()
Dim arr(): Dim arrResult()
Dim rg As Range: Dim i As Long
Set rg = Range("G:G")
arr = Application.Transpose(rg)
For i = LBound(arr) To UBound(arr)
If InStr(arr(i), "SAMSUNG TABLET") <> 0 Or InStr(arr(i), "IPAD") <> 0 Then
If InStr(arr(i), "64GB") <> 0 Then arr(i) = Replace(arr(i), "64GB", "!@!")
If InStr(arr(i), "CELL") = 0 And InStr(arr(i), "4G") = 0 And InStr(arr(i), "5G") = 0 Then
If InStr(arr(i), "!@!") <> 0 Then arr(i) = Replace(arr(i), "!@!", "64GB")
j = j + 1
ReDim Preserve arrResult(1 To j)
arrResult(j) = arr(i)
End If
End If
Next i
With rg
.AutoFilter Field:=1, criteria1:=arrResult, Operator:=xlFilterValues
'My issue starts here:
.Offset(1, -4).Resize(.Rows.Count - 1, 1).Value = "TEST"
End With
End Sub
我试过:
Set rg = Range("A:T")
.Offset(1, -4).Resize(.Rows.Count - 1, 1).Value = "TEST"
运行时错误——下标错误超出范围
您的问题出在
Offset
函数的第一个参数中 - row
参数设置为 1,此时您的范围 rg
是一整列,因此无法上下偏移。如果您将现有的.Offset(1, -4)
替换为.Offset(0, -4)
那么它不会抛出错误,尽管我不确定您的问题是您想要发生什么,这是否是一个令人满意的解决方案。