macros复制一行

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

这里是macros代码:

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 

使用

 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 

使用范围对象来testingsearchstring是否被find是值得的,然后你可以采取另一种行动,向用户提供信息等

而且,通过将目标的值设置为源的值,可以绕过复制和粘贴。

 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 

使用行范围名称查找“总计”行更快。 你可以做两行…

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

这是在Visual Basic中使用范围名称的原因。 Excel帮助video文本中介绍了范围的其他属性