VBA在Excel中search特定列
我想使用下面的VBA代码在Excel(列K)中search特定的列,但是当我运行macros而不是search整个工作表而不是指定的列。
问题是它首先在先前的列中find'mycell1',即列C中,而不是K列,我不想这样做。
我也尝试在'search顺序'中使用'xlByRows',它有相同的问题。
将不胜感激任何帮助,请
谢谢
Range("K:K").Select Set foundcell1a = Selection.Cells.Find(What:=mycell1, After:=ActiveCell, LookIn:=xlValues, LookAt _ :=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False, SearchFormat:=False) Set foundcell1a = Cells.FindNext If Not foundcell1a Is Nothing Then foundcell1a.Activate End If
不要使用。如果可以的话,大多数情况下都可以。
尝试使用With...End With
结构。 尽可能具体地说明你想要操作的对象。
Sub SearchK() Dim mycell1 Dim foundcell1a As Range mycell1 = 1 With ActiveWorkbook.Worksheets("Sheet1").Range("K:K") Set foundcell1a = .Find(mycell1, .Cells(.Rows.Count, 1)) Set foundcell1a = .FindNext(foundcell1a) If Not foundcell1a Is Nothing Then foundcell1a.Activate End If End With End Sub
没有With...End With
,你将不得不重复所有的对象标识符,所以:
Set foundcell1a = .Find(mycell1, .Cells(.Rows.Count, 1))
必须expression为:
Set foundcell1a = ActiveWorkbook.Worksheets("Sheet1").Range("K:K").Find(mycell1, .Cells(.Rows.Count, 1))
当VBA正在评估一个命令时,每次遇到它时需要评估一个句点(。)之前的每个属性。 使用ActiveWorkbook.Worksheets("Sheet1").Range("K:K")
摆脱4个周期,所以它也运行得更快。
Set foundcell1a = .Find(mycell1, .Cells(.Rows.Count, 1))
是mycell1
在列K中的最后一个使用的单元之后findmycell1
,所以它循环回去find列K中的第一个实例,而不pipe活动单元。
尝试这个:
With Range("K:K") Set LastCell = .Cells(.Cells.Count) End With Set FoundCell1a = Range("K:K").Find(mycell1, LastCell) If Not FoundCell1a Is Nothing Then FirstAddr = FoundCell1a.Address Range(FirstAddr).Activate End If
希望这可以帮助!