- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在不同的模块中使用了完全相同的技术,并且像一个魅力一样工作。我已经用下面的代码开始了新的宏,一旦尝试 Select
,它就会惨遭失败。所有过滤的单元格都复制到模板文件中。它都使用 Tables
所以ListObjects
.我在这里做错了什么?
Sub ImportMasterData()
Dim MasterData As Workbook
Dim Template As Workbook
Dim DateFrom As Date
Dim DateTo As Date
DateFrom = #2/4/2021#
DateTo = #6/4/2021#
Set MasterData = Workbooks.Open("C:/Users/RJamborski/Desktop/VBA/Master Archive.xlsx")
Set Template = Workbooks.Open("C:/Users/RJamborski/Desktop/VBA/MasterArchiveTemplate.xlsx")
With MasterData.Sheets(1).ListObjects(1).DataBodyRange
.AutoFilter Field:=1, Criteria1:= _
Array("Dav1 - Danes Way", "Dav2 - Rail Port", "Dav4 - MagnaParkLutterworth"), _
Operator:=xlFilterValues
.AutoFilter Field:=4, Criteria1:=">=" & DateFrom, _
Operator:=xlAnd, Criteria2:="<=" & DateTo
End With
Debug.Print MasterData.Sheets(1).ListObjects(1).DataBodyRange.Rows.Count ' this prints 32106
MasterData.Sheets(1).ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible).Select ' but this throws an error
Selection.Copy
Template.Sheets(1).ListObjects(1).Range("A2").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
End Sub
最佳答案
避免使用 .Select
正如上面提到的Bigben。如果有 32106
也没有必要。然后在过滤后所有行都是可见的。您需要尝试将可见范围存储在范围对象中(例如:Set rng = MasterData.Sheets(1).ListObjects(1).DataBodyRange.SpecialCells(xlCellTypeVisible)
),方法是将这条线夹在 On Error Resume Next
之间和 On Error Go To
.之后你必须检查 If Not rng is nothing then rng.copy
然后将其粘贴到目标工作表中。
代码
Option Explicit
Sub ImportMasterData()
Dim MasterData As Workbook
Dim Template As Workbook
Dim DateFrom As Date
Dim DateTo As Date
Dim rng As Range
DateFrom = #2/4/2021#
DateTo = #6/4/2021#
Set MasterData = Workbooks.Open("C:/Users/RJamborski/Desktop/VBA/Master Archive.xlsx")
Set Template = Workbooks.Open("C:/Users/RJamborski/Desktop/VBA/MasterArchiveTemplate.xlsx")
With MasterData.Sheets(1).ListObjects(1).DataBodyRange
.AutoFilter Field:=1, _
Criteria1:=Array("Dav1 - Danes Way", "Dav2 - Rail Port", _
"Dav4 - MagnaParkLutterworth"), _
Operator:=xlFilterValues
.AutoFilter Field:=4, Criteria1:=">=" & DateFrom, _
Operator:=xlAnd, Criteria2:="<=" & DateTo
On Error Resume Next
Set rng = .SpecialCells(xlCellTypeVisible)
On Error GoTo 0
End With
If Not rng Is Nothing Then
rng.Copy
Template.Sheets(1).ListObjects(1).Range("A2").PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Else
MsgBox "No Visible range found"
End If
End Sub
关于excel - 尝试在自动筛选后选择 DataBodyRange 中的可见单元格时,“工作表类的选择方法失败”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66972240/
晚上好, 我有以下按钮来保存表单的注册信息,但是在启动第一条记录时它会抛出错误:错误已发生 91 对象或 block 的变量未建立并指示突出显示的内容: 在已经插入值时它正常工作后,问题仅针对第一条记
假设我有以下示例表 我有一个 for 循环,贯穿整个 ListColumn(2) (C/3 列)并根据谁拥有最多的苹果对“用户”进行排名(例如,迈克尔为 1,罗伯特为 2,等等) 但是,假设我只想引用
我在不同的模块中使用了完全相同的技术,并且像一个魅力一样工作。我已经用下面的代码开始了新的宏,一旦尝试 Select,它就会惨遭失败。所有过滤的单元格都复制到模板文件中。它都使用 Tables所以Li
我有一个过滤的列表对象,需要获取当前可见的行数。我使用此语句来获取行数: MySheet.ListObjects("MyListObject").DataBodyRange.SpecialCells(
我正在尝试重置 Excel ListObject 中的列数。我知道您可以逐一添加和删除列,但我想避免不必要的循环。相反,我决定使用 Resize 方法调整 ListObject 的大小。 这是我正在使
摘要。我试图循环遍历一个表,如果在指定列中找到特定的子字符串,则删除每一行。我特别卡在查找目标文本的代码行上,我知道这是不正确的,但找不到我想要实现的目标的正确语法:If tbl.DataBodyRa
摘要。我试图循环遍历一个表,如果在指定列中找到特定的子字符串,则删除每一行。我特别卡在查找目标文本的代码行上,我知道这是不正确的,但找不到我想要实现的目标的正确语法:If tbl.DataBodyRa
我是一名优秀的程序员,十分优秀!