我需要能够
以下代码就是这样 - 但是,我正在尝试加快代码执行速度,并且复制和粘贴操作会降低代码执行速度。有没有办法在没有剪切/粘贴的情况下实现这一目标?我想坚持使用VBA(副配方),因为这是更大程序的一部分。
谢谢!
Sub FindValueAndAboveThenMoveOver ()
Dim sht1 as Worksheet
Set sht1 = Sheets("Convert")
sht1.Columns("A:A").Find("XXXX"), LookIn:=xlValues).Select
Range(ActiveCell.Offset(0, 0), "A1").Select
Selection.Cut
Range("B1").Select
ActiveSheet.Paste
End Sub
答案 0 :(得分:2)
剪切和粘贴没有任何问题,但你可以避免它,避免选择会加快速度。此外,您应首先检查您是否找到了可以避免错误的内容。
Sub FindValueAndAboveThenMoveOver()
Dim sht1 As Worksheet, r As Range
Set sht1 = Sheets("Convert")
Set r = sht1.Columns("A:A").Find("XXXX", LookIn:=xlValues)
If Not r Is Nothing Then
'should add sheet references here too
With Range("A1").Resize(r.Row)
Range("B1").Resize(r.Row).Value = .Value
.ClearContents
End With
End If
End Sub
答案 1 :(得分:1)
这可能会稍快一些:
Sub FindValueAndAboveThenMoveOver()
Dim sht1 As Worksheet, r As Range
Set sht1 = Sheets("Convert")
With sht1
Set r = Range(.Range("A1"), .Columns("A:A").Find("XXXX", LookIn:=xlValues))
End With
r.Offset(0, 1).Value = r.Value
r.Clear
End Sub