【发布时间】:2013-11-26 07:26:23
【问题描述】:
如标题中所述,我尝试首先检查特定单元格中的值,然后如果匹配,则将整行复制到新工作表中。没有抛出错误,但结果为空。 请帮忙。
Public Function freshSheet(inPart As String)
Dim mag As Worksheet
Dim currRow As Long
Dim iohd As Worksheet
Dim magCount As Integer
Set iohd = ActiveWorkbook.Worksheets("IOHD")
'TODO: Create Magic Sheet.
Set mag = ActiveWorkbook.Worksheets.Add(After:=ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count))
mag.Name = "Magic"
'TODO: Iterate through IOHD Sheet.
For currRow = iohd.Rows.Count To 2 Step -1
'TODO: IS PART EQUAL TO INPART? IF SO, COPY TO MAGIC SHEET
If iohd.Cells(currRow, 2).Value = inPart Then
magCount = mag.UsedRange.Rows.Count + 1
iohd.Cells(currRow, 2).EntireRow.Copy Destination:=mag.Cells(magCount, 1)
End If
Next
End Function
【问题讨论】:
-
你好,罗伯特。首先,在
Workbook、Sheet或Cell中使用Active弊大于利。其次,要获取工作表的最后一行,.Cells(Rows.Count, 1).End(xlUp).Row是理想的方法。请在下面查看我对您的代码的修改。 :) 此外,从长远来看,将magCount声明为Long会好得多。 -
为什么不使用AUTOFILTER?
-
因为工作表 (IOHD) 已被过滤。每次我想这样做时,我都需要重置这些过滤器。我会考虑你的建议 BK。谢谢。
-
可能也希望看到这一点,因为它涵盖了相同的方法。 link
标签: vba excel excel-2010