如果单元格是空的复制单元格上面

Sub MacroFillAreas() For Each area In Columns("B:C").SpecialCells(xlCellTypeBlanks) If area.Cells.Row <= ActiveSheet.UsedRange.Rows.Count Then area.Cells = Range(area.Address).Offset(-1, 0).Value End If Next area End Sub 

这是我的工作簿中填充空白单元格的macros。 我在区域上抛出一个对象错误area.Cells = Range(area.Address).Offset(-1, 0).Value

谁能解释为什么会发生这种情况 这里是数据的一个简单的例子,以及我正在试图用它来做什么。

 A 1 12 A 1 12 AAA 2 14 AA 3 14 A A 

这必须复制上面的单元格:

 A 1 12 A 1 12 A 1 12 A 1 12 A 2 14 A 2 14 A 3 14 A 3 14 A 3 14 

BruceWayneis,当B1:C1是空白时,你会得到错误。

  • 非连续单元格的范围对象有多个区域。 出于这个原因,你应该重新命名区域到单元来澄清。
  • 区域。误导区域只是1个小区的使用区域
  • 区域是一个范围,不需要这个Range(area.Address).Offset(-1, 0).Value使用`area.Offset(-1,0).Value改为
  • 如果没有find单元格,SpecialCells会抛出一个错误。 你需要捕捉这个错误。
 Sub MacroFillAreas()

     Dim cell As Range,SearchRange As Range

    在错误恢复下一步
     Set SearchRange = Columns(“B:C”)。SpecialCells(xlCellTypeBlanks)
    在错误转到0

    如果不是SearchRange是没有的话
        对于每个单元格在SearchRange中

            如果cell.Row> 1那么cell = cell.Offset(-1,0).Value

        下一个单元格
    万一

结束小组