为什么我不能按名称访问工作表?

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.