将值插入过滤器后的表列中的单元格

时间:2013-12-13 20:52:44

标签: excel excel-vba copy-paste vba

不确定为什么我的代码无效。我正在通过空白值“(空白)”过滤表中的列。然后将值“NA”插入第一个单元格,并通过向下拖动填充手柄向下移动到列中的最后一个单元格来复制该值。然后再过滤未完成的表,以便一切都显示出来。

但是,当我运行宏时,它所做的就是复制列标题名称并将其粘贴到第一个单元格中,而不是其他内容。

Sub InsertNAtoBlanks()
'
' InsertNAtoBlanks Macro
'
'
     ActiveSheet.ListObjects("Table6").Range.AutoFilter Field:=11, Criteria1:= _
        "="
     Range("K4").Select
     ActiveCell.FormulaR1C1 = "NA"
     Range("K4").Select
     Selection.FillDown
     ActiveSheet.ListObjects("Table6").Range.AutoFilter Field:=11
     End Sub

1 个答案:

答案 0 :(得分:3)

看起来您使用宏录制器来获取此代码。虽然宏录制器是查看要使用的对象的好方法,但它可以生成一些非常糟糕的代码!

尝试使用此策略

Sub Demo()
    Dim lo As ListObject
    Dim rng As Range

    Set lo = ActiveSheet.ListObjects("Table6")
    Set rng = lo.DataBodyRange.Columns(11)
    rng.SpecialCells(xlBlanks) = "NA"
End Sub

或按名称引用列

Set rng = lo.ListColumns("YourColumnName").DataBodyRange