我发现了一个几乎可以满足我需要的宏。它复制一行名为“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
答案 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
的文本中