macrosselect整个工作表中的第一个非空单元格

假设工作表中只有一个非空单元格,并且您想要一个macros来find它。 到目前为止,我有下面的代码,但我正在努力调整它,所以它search所有列,而不仅仅是一个:

Sub FirstNonEmpty() Dim ws As Worksheet Set ws = ActiveSheet For Each cell In ws.Columns(1).Cells If Not IsEmpty(cell) = True Then cell.Select: Exit For Next cell End Sub 

也许有一种方法来使用一个variables等于所有的列而不是“1”在“ws.Columns(1).Cells”?

您可以将For语句更改为:

 For Each cell In ws.UsedRange.Cells 

这有利于不扫描工作表末尾的行/列。

如果非空白单元格不包含公式,则可以使用顶层公式;如果是公式,则可以使用xlcelltypeformulas。 如果你知道有一个非空白的,你不需要On Error。 事实上,如果确实只有一个,你也不需要(1)。

 On Error Resume Next ActiveSheet.Cells.SpecialCells(xlCellTypeconstants)(1).Select 'or 'ActiveSheet.Cells.SpecialCells(xlCellTypeformulas)(1).Select 

或者你可以试试这个…

 Dim Rng As Range Set Rng = Cells.Find(what:="*", LookIn:=xlValues) If Not Rng Is Nothing Then Rng.Select End If