Excel VBA – 适用于1个单元格,不能修改多行
谢谢你的帮助。 试图寻找几个小时。 我几乎有这个macros完美的工作,我只是不知道如何做一个微小的修改:
这一个完美的作品,但只有1行:
Sub UpdateStatusTest01() Dim s1 As Worksheet, s2 As Worksheet Set s1 = Sheets("test") Set s2 = Sheets("SIGNUPS") v1 = s1.Range("A2") v2 = s1.Range("B2") s2.Activate For Each r In Intersect(ActiveSheet.UsedRange, Range("A:A")) If r.Value = v1 Then r.Offset(0, 1).Value = v2 End If Next End Sub
我希望它移到“SIGNUPS”工作表的下一行,并且继续为B2之后的行find/匹配/replaceB列数据。 如果我尝试修改
v1 = s1.Range("A2") v2 = s1.Range("B2")
成
v1 = s1.Range("A:A") v2 = s1.Range("B:B")
代码变成了
Sub UpdateStatusTest01() Dim s1 As Worksheet, s2 As Worksheet Set s1 = Sheets("test") Set s2 = Sheets("SIGNUPS") v1 = s1.Range("A:A") v2 = s1.Range("B:B") s2.Activate For Each r In Intersect(ActiveSheet.UsedRange, Range("A:A")) If r.Value = v1 Then r.Offset(0, 1).Value = v2 End If Next End Sub
但是excel不喜欢这一行:
If r.Value = v1 Then
只有当修改的范围从1个单元格更改为一个整列时才会发生。 确切的错误是“运行时错误13”:types不匹配“。
我知道我想修改那个麻烦的一行,但我不知道该如何处理一个具有多个单元格的范围。 我会很感激任何帮助! 谢谢!!
VBA根本不明白你想要什么。 要么遍历每个可能性或做一个像这样的查找:
Sub UpdateStatusTest01() Dim s1 As Worksheet, s2 As Worksheet Dim v1 As Range, v2 As Range Set s1 = Sheets("test") Set s2 = Sheets("SIGNUPS") Set v1 = s1.Range("A:A") Set v2 = s1.Range("B:B") s2.Activate For Each r In Intersect(ActiveSheet.UsedRange, Range("A:A")) If IsNumeric(Application.Match(r.Value, v1, 0)) Then r.Offset(0, 1).Value = Application.Index(v2, Application.Match(r.Value, v1, 0)) End If Next End Sub
希望这是你正在寻找的(对我来说不是100%清楚你想要什么)。
它只是简单地检查v1
是否有你想要的值,并从同一行打印v2
的值。
错误本身就是因为你试图比较( =
)一个VBA不可能的数组。
然而,像这样简单的任务也可以通过工作表公式完成)