复制行的宏

时间:2011-09-16 21:47:32

标签: excel vba

我发现了一个几乎可以满足我需要的宏。它复制一行名为“Totals”的行并将该行粘贴到新工作表中。行“Totals”有公式,我需要值。如何调整宏才能正常工作?

这是宏代码:

Sub RowCopy2()
Dim rngFind As Range

With Worksheets("Hol. Stats").UsedRange
Set rngFind = .Find("Totals", _
            LookIn:=xlValues, _
            LookAt:=xlWhole, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=True)
End With
rngFind.EntireRow.Copy _
Destination:=Worksheets("Sheet2").Range("A1")
End Sub

3 个答案:

答案 0 :(得分:4)

使用

Sub RowCopy2() Dim rngFind As Range
  With Worksheets("Hol. Stats").UsedRange 
    Set rngFind = .Find("Totals", _
         LookIn:=xlValues, _
         LookAt:=xlWhole, _
         SearchOrder:=xlByRows, _
         SearchDirection:=xlNext, _
         MatchCase:=True) 
  End With 

  rngFind.EntireRow.Copy 
  Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues
End Sub

答案 1 :(得分:1)

值得利用范围对象测试是否实际找到了搜索字符串,然后您可以采取其他操作,向用户提供信息等

并且fwiw您可以通过将目标的值设置为源的值来绕过复制和粘贴。

Sub RowCopy2()
Dim rngFind As Range
Set rngFind = Worksheets("Hol. Stats").UsedRange.Find("Totals", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=True)
If Not rngFind Is Nothing Then Worksheets("Sheet2").Rows(1).Value = rngFind.EntireRow.Value
End Sub

答案 2 :(得分:0)

使用行范围名称找到“Totals”行更快。然后你可以分两行......

Rows(Range("Totals").Row).Copy
Sheets("Sheet2").Range("A1").PasteSpecial xlPasteValues

这就是在Visual Basic中使用范围名称的原因。范围的其他属性包含在此Excel help video

的文本中