Excel 使用范围变量
我在尝试使用范围作为变量时遇到问题。继续获取“范围类的选择方法失败”错误。你知道我可能做错了什么吗Excel 使用范围变量,excel,vba,range,Excel,Vba,Range,我在尝试使用范围作为变量时遇到问题。继续获取“范围类的选择方法失败”错误。你知道我可能做错了什么吗 Dim OnRent As Workbook Dim MattFile As Workbook Dim Rng As Range Set OnRent = Workbooks("On-Rent 09-22-17.xlsx") Set MattFile = ThisWorkbook Set Rng = ActiveSheet.Range("B101") OnRent.Activate Ac
Dim OnRent As Workbook
Dim MattFile As Workbook
Dim Rng As Range
Set OnRent = Workbooks("On-Rent 09-22-17.xlsx")
Set MattFile = ThisWorkbook
Set Rng = ActiveSheet.Range("B101")
OnRent.Activate
ActiveSheet.PivotTables("PivotTable1").PivotFields("CHKOUT_POOL"). _
ClearAllFilters
ActiveSheet.PivotTables("PivotTable1").PivotFields("CHKOUT_POOL").CurrentPage _
= "LOS ANGELES"
Range("B15:L108").Copy
MattFile.Activate
Sheets("LAX Data").Activate
Rng.Select
ActiveSheet.Paste
问题:如果Rng.Parent处于活动状态,则Rng.Select仅起作用
只有当范围所属的工作表处于活动状态时,Range.Select方法才会起作用
Rng
范围可能不在工作表(“LAX数据”)
上,当另一个工作表处于活动状态时,通过调用Rng。选择
,您会遇到错误
进一步解释:
您将范围设置为Set Rng=ActiveSheet.Range(“B101”)
“注意:这可以是任何图纸。范围对象将其位置与其所在的图纸一起存储,因为文件是由完整/绝对路径定义的
稍后,当您想Rng时,选择您(可以)在不同的工作表上,选择将不起作用
不要使用范围。选择和工作表。如果不需要,请激活方法
瞧!或者网上的许多建议中的一些,比如
一些代码替代方案
为了演示这是如何工作的,下面是一些未经测试的代码
Sub refreshOnRentForLosAngeles()
Dim OnRentSheetWithPivots As Worksheet
Dim Pivot As PivotTable
Set OnRentSheetWithPivots = Workbooks("On-Rent 09-22-17.xlsx").Sheets(1) 'change to fit
Set Pivot = OnRentSheetWithPivots.PivotTables("PivotTable1")
Pivot.PivotFields("CHKOUT_POOL").ClearAllFilters
Pivot.PivotFields("CHKOUT_POOL").CurrentPage = "LOS ANGELES" 'Turn the city into input variable for reusability?
'The copy source will always be the same? Can u make it dynamic?
OnRentSheetWithPivots.Range("B15:L108").Copy ThisWorkbook.Sheets("LAX Data").Range("B101")
End Sub
如果要在图纸“LAX数据”
上参考范围“B101”
,则应替换Rng。选择范围(“B101”)。选择。这样,您就不会尝试选择不在ActiveSheet
上的范围(这是出现错误的原因)。谢谢,但我正试图避免这样做。这就是我现在拥有它的方式,但是我正在浏览17张不同的表格,所以我希望只更改一次范围,而不是每次都要查找和替换。谢谢您的反馈。因此,即使我在选择Rng单元之前激活了该表,它仍然不知道将其放置在何处?听起来最好的办法就是继续做我正在做的事情,每天都找到并更换这个范围。问题是,我每天都在更新一个报表,它使用17个不同的选项卡将数据从一个报表粘贴到一个单独的报表,因此上面的代码重复17次,但针对不同的数据选项卡。我想我会尝试找到一种每天更改范围输出的简单方法,而不是每次都查找和替换。@mpthomas1219 1)您缺少的是:Rng变量正在对单元格进行笔划。在床单上。只有那些。它是一个对象,不是一个单元格地址。(阅读多次)。2) 不要查找和替换硬编码值。让它们成为变量。例如,你可以下拉城市名称和目标表。然后你只需选择你需要的并按下一个按钮。3) 如果每张工作表上的粘贴(目标)单元格始终为B101
,则可以使用此字符串作为地址,并将其与工作表组合,形成一个范围。更好的是,创建一个工作表范围的命名范围并使用它。