【发布时间】:2021-09-19 20:26:40
【问题描述】:
我的目标是将符合特定条件的行复制并粘贴到另一个工作簿的表中。
我的 VBA 运行良好,只是它粘贴在表格下方的空单元格中。不在表格内标题下方的空单元格中。
PS。我知道使用 select 通常不受欢迎,但我需要使用相当基本的语法,以便如果下一个人需要修改它并且不熟悉 VBA,他们可以。
Sub Export()
Sheets("Export Format").Select
Cells(13, "D").Calculate
With Range("A1", Cells(Rows.Count, "L").End(xlUp)) 'reference its column A:G cells from row 1 (header) down to last not empty one in column "A"
.AutoFilter Field:=6, Criteria1:="<>0" ' filter referenced cells on 6th column with everything but "0" content
If Application.WorksheetFunction.Subtotal(103, .Columns(1)) > 1 Then
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).Copy ' copy filtered cells skipping headers
With Workbooks.Open(Filename:="Z:\Tracking\Database.xlsx").Sheets("Sheet1") 'open wanted workbook and reference its wanted sheet
.Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False 'paste filtered cells in referenced sheet from ist column A first empty cell after last not empty one
.Parent.Close True 'Save and closes referenced workbook
End With
Application.CutCopyMode = False
End If
End With
On Error Resume Next
Sheets("Export Format").ShowAllData 'Clears Filters
On Error GoTo 0
Sheets("Export Format").Select 'Brings back to Main request sheet
End Sub
【问题讨论】:
-
桌子是空的吗?
-
是的,该表是空的。我添加了一张数据库图片,以供参考。
-
想必Region是A列,你确定空白单元格没有隐藏空格吗?
-
正确,区域是 A 列,我已清除该行的内容,因此其中没有任何内容。
-
好像xlup不会进入表格,正确的方法是引用表格对象,知道表格名称吗?如果您知道该表是空的,那么我想删除
.Offset(1, 0)可能会起作用(但会使后续维护者感到困惑!)