拥有一个使用多个工作表(15+)的工作簿,用于存放大量制造商数据。我们通过特定列输入所需数量来选择订单项目。我们使用高级过滤和复制到选项将所有包含数量> 0的订单项移动到每个工作表中的特定区域。每个工作表的范围复制(P9:V3000)是相同的。我想编写一个vba宏来复制并将每个工作表中的高级过滤数据组合到名为(设备列表)的工作簿中的单独工作表中。我的挑战是只选择包含细胞下数据的细胞(P9:V9)。 P9:V9是标题行,下面的所有内容(P10:V3000)是我要复制的数据。
以下是我使用过的特定于一个工作表的代码(" Ansul Equipment")当下面有多个订单项时,代码可以正常工作(P9:V9)。当我只有一个项目代码行 "范围(选择,选择。结束(xlDown))。选择"选择P10:V10下面的每个单元格,即使它们不包含数据。选择仅包含数据的范围(P10:V3000)中的单元格的最佳方法是什么?如果可能的话,想循环遍历每个工作表。
Sub PC_CombinedCopyTo_EquipmentList()
'Turn Off Screen Updating
Application.ScreenUpdating = False
'Clear the("Equipment List") Copy to Range via macro
Application.Run ("EquipmentList_ClearCTR")
'Set imax rows variable which will allow me to select the first blank cells below the header in the ("Equipment List") worksheet
Sheets("Equipment List").Select
iMaxRows = Cells(Rows.Count, "A").End(xlUp).Row**
'Copy Ansul ADF Equipment list
Sheets("Ansul Equipment").Select
Range("P10:V10").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets("Equipment List").Select
Range("A" & iMaxRows + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=True, Transpose:=False
Application.ScreenUpdating = True
End Sub
答案 0 :(得分:0)
范围(" P10:V10&#34)。选择
范围(选择,选择。结束(xlDown))。选择
这是正常的,你选择第10行然后你去xlDown,所以选择将转到工作表的末尾。
虽然我建议避免使用Select
,并编辑任何宏生成的代码以删除这个不好的习惯用语,我建议将其作为快速修复:
Range("P10:V" & cells(Rows.count, "v").end(xlUp).Row).Select