我在excel中遇到了一些VBA问题。我试图做一些等价的迭代,但在范围类型。当然它不起作用。有没有任何选项可以省略这个或某种功能,将做我想要的?迭代范围VBA
Sub trial()
Dim rng As Range
Dim rng_tmp As Range
Dim rngf As Range
Dim lastrow As Long
Dim lastcol As Long
lastcol = Sheets("Data").Range("A1").End(xlToRight).Column
lastrow = Sheets("Data").Range("B" & Sheets("Data").Rows.Count).End(xlUp).Row
For i = 2 To lastrow
If Sheets("Data").Cells(i, 12).Value <= 5 Then
Set rng_tmp = Sheets("Data").Range(Sheets("Data").Cells(i, 1), Sheets("Data").Cells(i, lastcol))
End If
With Sheets("Data").Cells(i, 12)
If .Value = "11970BR" Or .Value = "13765BR" Or .Value = "14000BR" Or .Value = "14041BR" Or .Value = "14295BR" Or .Value = "14296BR" Or .Value = "14369BR" Or .Value = "14608BR" Or .Value = "14699BR" Then
Set rng_tmp = Sheets("Data").Range(Sheets("Data").Cells(i, 1), Sheets("Data").Cells(i, lastcol)).Select
End If
End With
***Set rng = Union(rng, rng_tmp)***
Next i
rng.Select
End Sub
这个粗体和斜体(或*之间的代码段)行等价于i = i + 1。有没有办法将它应用到Range类型? 感谢您的帮助。
什么是你的代码做什么,或者应该做的? – Raystafarian
你没有指出什么是错误的,但我猜想在你的Set rng = Union()'语句之前在两个不同的地方使用'Set rng_tmp = ...'有一个问题。你的第二个'If'语句会覆盖在第一个'If'语句中设置的'rng_tmp'的值,当两者都为真时。 – FreeMan