为什么我不能按名称访问工作表?
Why cannot I not access a worksheet by name?
我正在使用 Excel 2013。我可以通过遍历工作表并检查 Name
属性 来访问工作表,但我无法使用工作表单独找到它名称作为键。
我真的必须遍历所有工作表然后遍历所有数据透视表才能找到我需要刷新的那个吗?
这个有效:
Dim oWorksheet As Worksheet
Dim oPivot As PivotTable
For Each oWorksheet In ActiveWorkbook.Worksheets
If oWorksheet.Name = "FPSpivot" Then
For Each oPivot In oWorksheet.PivotTables
oPivot.PivotCache.Refresh
Next oPivot
End If
Next oWorksheet
这行不通:
Dim oWorksheet As Worksheet
oWorksheet = ActiveWorkbook.Worksheets("FPSpivot")
我得到老栗子:
Object variable or With block variable not set.
为什么?
理想情况下,我只想要单行:
ActiveWorkbook.Worksheets("FPSpivot").PivotTables("FPSpivot").PivotCache.Refresh
这一定是可能的吧?
错误
Object variable or With block variable not set.
发生是因为如果您使用对象,则需要使用 Set
。
Dim oWorksheet As Worksheet
Set oWorksheet = ActiveWorkbook.Worksheets("FPSpivot")
此外:
你确定你的意思是 ActiveWorkbook
(有焦点的工作簿/在顶部)还是你的意思 ThisWorkbook
(代码写入的工作簿)?有很大的不同,在大多数情况下你需要 ThisWorkbook
.
我正在使用 Excel 2013。我可以通过遍历工作表并检查 Name
属性 来访问工作表,但我无法使用工作表单独找到它名称作为键。
我真的必须遍历所有工作表然后遍历所有数据透视表才能找到我需要刷新的那个吗?
这个有效:
Dim oWorksheet As Worksheet
Dim oPivot As PivotTable
For Each oWorksheet In ActiveWorkbook.Worksheets
If oWorksheet.Name = "FPSpivot" Then
For Each oPivot In oWorksheet.PivotTables
oPivot.PivotCache.Refresh
Next oPivot
End If
Next oWorksheet
这行不通:
Dim oWorksheet As Worksheet
oWorksheet = ActiveWorkbook.Worksheets("FPSpivot")
我得到老栗子:
Object variable or With block variable not set.
为什么?
理想情况下,我只想要单行:
ActiveWorkbook.Worksheets("FPSpivot").PivotTables("FPSpivot").PivotCache.Refresh
这一定是可能的吧?
错误
Object variable or With block variable not set.
发生是因为如果您使用对象,则需要使用 Set
。
Dim oWorksheet As Worksheet
Set oWorksheet = ActiveWorkbook.Worksheets("FPSpivot")
此外:
你确定你的意思是 ActiveWorkbook
(有焦点的工作簿/在顶部)还是你的意思 ThisWorkbook
(代码写入的工作簿)?有很大的不同,在大多数情况下你需要 ThisWorkbook
.