我怎样才能找到最后的彩色&在Excel 2010中使用VBA连续清空单元格?

时间:2014-08-21 20:29:55

标签: excel excel-vba excel-2010 vba

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

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

    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方法以外的方法吗?
    4. 我期待(并且非常感谢)任何一位大师'破解这个小坚果!

1 个答案:

答案 0 :(得分:2)

好问并提出问题。

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