【发布时间】:2017-11-20 15:50:21
【问题描述】:
以下代码是根据第一张纸的 E 列中满足的关键字条件,将行从 sheet1 复制并粘贴到 sheet2。
在代码行 5 到 10 之间,我尝试将整个第十行复制到 sheet2 以用作此工作表的列标题,其中将创建一个数据透视表。
每当我尝试运行任何操作来复制和粘贴此行时,都会收到“应用程序定义或对象定义错误”。
谁能帮忙?
Sub mileStoneDateChanger()
Dim r As Long, pasteRowIndex As Long, v() As Long, i As Long
Dim lastRow As Long
Dim lCol As Long
Sheets("Sheet1").Select
Rows("10:10").Select
Selection.Copy
Sheets("Sheet2").Select
Range("A1").Select
Selection.Paste
lastRow = Cells.Find(What:="*",
After:=Range("A1"),
LookAt:=xlPart,
LookIn:=xlFormulas,
SearchOrder:=xlByRows,
SearchDirection:=xlPrevious,
MatchCase:=False).Row
MsgBox "Last Row: " & lastRow
pasteRowIndex = 1
With Sheets("Sheet1")
For r = 1 To lastRow
If .Cells(r, "E").Value Like "Milestone*" Then
If UBound(Split(.Cells(r, "E"), ",")) > 0 Then
i = i + 1
ReDim v(1 To i)
v(i) = pasteRowIndex
End If
Sheets("Sheet1").Rows(r).Copy Sheets("Sheet2").Rows(pasteRowIndex)
pasteRowIndex = pasteRowIndex + 1
End If
Next r
End With
With Sheets("Sheet2")
newLastRow = pasteRowIndex
If IsArray(v) Then
.Columns(6).Insert shift:=xlToRight
For i = 1 To newLastRow
If InStr(1, .Cells(i, "E"), ",") Then
.Cells(i, "F").Value = Split(.Cells(i, "E"), ",")(1)
End If
Next i
End If
End With
End Sub
【问题讨论】:
-
当您手动执行相同的操作时,使用宏记录器会得到什么语法?这应该是一个很好的第一次检查。
-
您要查找最后一行的哪张工作表?此代码现在找到 Sheet2 的最后一行
-
@mooseman 我在第一张纸上找到最后一行,然后在第二张纸上分别找到最后一行.. 两个单独的操作