我在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