尝试将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
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
答案 0 :(得分:1)
只有范围所属的工作表处于活动状态时,Range.Select方法才有效。
Rng
范围可能不在Sheets("LAX Data")
上,并且在另一张工作表处于活动状态时调用Rng.Select
,您会遇到错误。
进一步解释:
您将范围设置为
Set Rng = ActiveSheet.Range("B101")
'注意:这可以是任何工作表。范围对象存储其位置以及它来自的工作表,因为文件由完整/绝对路径定义。
稍后,如果您希望Rng.Select
您(可以)在不同的工作表上,则选择将无效。
见Mats link!或者网上有一些很多建议,比如Power Excel vba secret, avoid using select
为了演示这是如何工作的,这里有一些未经测试的代码。
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
答案 1 :(得分:0)
如果您想在工作表<div class="form-group" *ngFor="let genero of generos" > {{genero.name}}</div>
上引用范围"B101"
,则应将"LAX Data"
替换为Rng.Select
。这样你就不会尝试选择不在Range("B101").Select
上的范围(这是错误的原因)。