繁体   English   中英

如何在Excel 2010中使用VBA连续找到最后一个彩色和空白单元格?

[英]How can I find the last colored & empty cell in a row using VBA in Excel 2010?

我是VBA的新手,正在编写一个宏来查找特定行中填充了特定颜色的最后一个空单元格。 基于我到目前为止所阅读和尝试的内容:

  1. 在尝试识别最后一个单元格/行/列时,最好从底部或右侧开始。
  2. Find方法比使用循环更快。
  3. 关于(以及使用)的问题Find重点是使用(有时没有)数据或最后使用的单元格(通常在列中,包含数据)来识别最后一行或列。
  4. 最好在使用Find方法之前指定内部颜色,因为它可能具有上次使用时的某些其他内部颜色的值(通过代码或用户)。

这是我到目前为止的代码:

Sub FindLastEmptyTurquoiseCellOnRow18()
Dim rngFindColorCell As Range
    Range("XFD18").Select
    With Application.FindFormat.Interior
        .Color = 16763955
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
    End With
    Set rngFindColorCell = Range("A18:XFD18").Find(What:="", After:=Range("XFC18"), _
     LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, _
     MatchCase:=False, SearchFormat:=True)
    rngFindColorCell.Select
End Sub

After参数似乎在我的新手眼中与我想要的搜索方向明显冲突(After表示向右(?), xlPrevious表示向左移动)。 如果搜索确实必须在向左前进1个单元格之前,我指定了行中倒数第二个单元格。

我也可以将行的搜索限制在前8785列。

我正在尝试最后(这次使用Select )来确定代码是否正在识别正确的单元格。 正是在这一点上,当我逐步执行代码时,我得到了错误:

运行时错误'91':对象变量或未设置块变量

  1. 如何确定代码是否识别正确的单元格? (我尝试过MsgBox并将找到的单元格的内部颜色设置为不同的颜色,但也会出错。)
  2. 代码中是否存在错误,导致其无法识别正确的单元格?
  3. 我应该使用Find方法以外的方法吗?

我期待(并且会非常感谢)任何'大师'破解这个小坚果!

好问和布置问题。

  1. 测试你发现匹配If Not rngFindColorCell Is Nothing (参见下面的新最后一行)
  2. 您现在的代码开始首先查看XFB18因为您已经使用了xlPrevious ,然后是XFA18等(最终回到XFD18 ,最后是XFC18
  3. 您的Select行是不必要的。
  4. 最好使用xlWhole macthing整个字符串,而不是当xlPart (不会在这种情况下,重要)
  5. 使用xlFormulas而不是xlValues也将匹配隐藏列( xlValues跳过它们)

Sub FindLastEmptyTurquoiseCellOnRow18()
Dim rngFindColorCell As Range

With Application.FindFormat.Interior
        .Color = 16763955
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
End With

Set rngFindColorCell = Range("A18:XFD18").Find(vbNullString, Range("XFC18"), xlFormulas, xlWhole, xlByRows, xlPrevious, , True)

If Not rngFindColorCell Is Nothing Then
  MsgBox "found in " & rngFindColorCell.Address(0, 0)
Else
  MsgBox "No matching cells found"
End If

End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM