在Excel VBA中,我如何保存所做的select?

我想在第五行的范围内select每一个有“TEST”的列,然后select下面的单元格到一定的数量。 我可以find并select我想要的范围,我只是不能完成我所有的select,我想他们,所以我可以做一些条件格式。

Public Sub Macro1() Dim n As Integer n = 5 For Each c In Worksheets("Sheet1").Range("E5:UM5").Cells If InStr(1, "TEST", "TEST") Then Range(Cells(6, n), Cells(48, n)).Select n = n + 1 End If Next End Sub 

你认为一个数组可以帮助我保存数据,然后select?

下面的代码从用户ooo的答案修改。

是否有一个原因,你需要select单元格? 在vba中,你可以做大部分的事情,而不用真正的select单元格,这使得它更快,更不容易出错。

如果你确实需要select单元格,我会build立范围,然后在最后一次select它。

戈登

 Sub test() Dim rng1 As Range Dim rng2 As Range Dim newRng As Range With Sheet1 Set rng1 = .Range("A1:A3") Set rng2 = .Range("C3:C5") Set newRng = Union(rng1, rng2) set rng2 = .range("E5:E7") set newRng = Union(newRng,rng2) newrng.select End With End Sub 

适用于您的代码

 Public Sub Macro1() Dim n As Integer dim rng as range n = 5 For Each c In Worksheets("Sheet1").Range("E5:UM5").Cells If InStr(1, "TEST", "TEST") Then If rng Is Nothing Then Set rng = Range(Cells(6, n), Cells(48, n)) else set rng = union(rng, range(cells(6,n),cells(48,n))) end if n = n + 1 End If Next rng.select End Sub 
 Public Sub Macro1() Dim n As Integer, rng as Range, sht as WorkSheet Set sht = Worksheets("Sheet1") For Each c In sht.Range("E5:UM5").Cells If c.value Like "*TEST*" Then If rng is nothing then Set rng = c.offset(1,0).Resize(43,1) else Set rng = Application.union(rng, c.offset(1,0).Resize(43,1)) end if End If Next rng.select End Sub 
 Public Sub Macro1() Dim c As Range, rng As Range, ws As Worksheet Set ws = Worksheets("Sheet1") For Each c In ws.Range("E5:UM5").Cells If InStr(c, "TEST") Then If rng Is Nothing Then Set rng = c Else Set rng = Application.Union(rng, c) End If End If Next If Not rng Is Nothing Then rng.Select Debug.Print rng.Address Else Debug.Print "Not found" End If End Sub