我还在学习VB。我尝试在excel 2010中录制一个VB脚本,在主工作表上选择一个名称,然后转到另一个工作表并查找具有该名称的所有行,复制所有行并返回到主工作表并将复制的单元格插入所选名称。细胞被推下。代码应重复下面的下一个名称,其中复制的单元格被粘贴。
我的录音无法完成上述所有操作。你有什么建议吗?
Sub Macro5()
'
' Macro5 Macro
'
' Keyboard Shortcut: Ctrl+l
'
Selection.Copy
Sheets("Sheet1").Select
ActiveCell.Offset(2, 3).Range("A1").Select
Cells.Find(What:="Leeanne Hickmott", After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
ActiveCell.Rows("1:3").EntireRow.Select
ActiveCell.Offset(0, -7).Range("A1").Activate
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet4").Select
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select
Selection.Insert Shift:=xlDown
ActiveCell.Offset(3, 6).Range("A1").Select
End Sub
答案 0 :(得分:0)
Excel的记录宏进程无法记录使这种宏工作所需的条件或循环。它也无法记录您将值粘贴到查找对话框中,它只记录您要搜索“Leeanne Hickmott”
我的第一个建议是使用范围变量指向每个工作表上的重要单元格。例如......
Dim rngPasteHere as Range, rngCopyFrom as Range
set rngPasteHere = Selection
set rngCopyFrom = Sheets("Sheet1").Range("D1")
' find first row
set rngCopyFrom = rngCopyFrom.Cells.Find(What:=rngPasteHere.Value _
, After:=rngCopyFrom, LookIn:=xlFormulas _
, LookAt:=xlPart, SearchOrder:=xlByRows _
, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
您还需要两个循环,一个外循环重复下一个名称的整个过程,一个内循环查找具有当前名称的所有行。在不知道你的数据是什么的情况下,我真的无法获得更具体的信息。