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 

希望这可以帮助!