最后一行不是空行; Excel VBA

我有一个Excel工作表,我需要find特定列中的最后一个非空单元格

我如何做到这一点?

下面将为我select这个,但它会select第一个不是空的单元格,我需要在行中的最后一个不空的单元格。

Worksheets("DTCs").Range("A29").End(xlToRight).Select

我认为它可能只是从另一个方向search,所以像这样:

 Worksheets("DTCs").Range("IV29").End(xlToLeft).Select 

虽然也许IV需要改变到别的东西取决于Excel的版本(这似乎在2003年工作)。

我已经扩大了我的评论,以提供解决scheme

  • 不要使用Select
  • 迎合使用第一行的最后一个单元格
  • 照顾整个行是空的
  • 迎合整个排满

第二个代码中的Find方法是build立第一个非空白单元格的更为直接的方法

这行Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlValues, , xlByColumns, xlPrevious)表示,从工作表“DTCa”的单元格A1开始,然后向后看(即从最后在第1行中的单元格)在第1行中寻找任何东西( * )。 此方法要么find最后一个非空白或返回Nothing ,即空行

使用xltoLeft进行特定的检查

 Sub Method1() Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("DTCs") If ws.Cells(1, Columns.Count) = vbNullString Then Set rng1 = ws.Cells(1, Columns.Count).End(xlToLeft) If rng1.Column <> 1 Then 'return last used cell MsgBox "rng1 contains " & rng1.Address(0, 0) Else If ws.[a1] = vbNullString Then MsgBox ws.Name & " row1 is completely empty", vbCritical Else 'true last used cell is A1 MsgBox "rng1 contains " & rng1.Address(0, 0) End If End If Else 'last cell is non-blank MsgBox ws.Cells(1, Columns.Count) & " contains a value", vbCritical End If End Sub 

推荐的

 Sub Method2() Dim ws As Worksheet Dim rng1 As Range Set ws = Sheets("DTCs") Set rng1 = ws.Rows(1).Find("*", ws.[a1], xlFormulas, , xlByColumns, xlPrevious) If Not rng1 Is Nothing Then MsgBox "rng1 contains " & rng1.Address(0, 0) Else MsgBox ws.Name & " row1 is completely empty", vbCritical End If End Sub