Ключ должен убедиться, что вы находитесь в правильном диапазоне.Просмотрите превосходную страницу Джона Пельтье по диапазонам сводных таблиц .В вашем случае вы хотите ограничить свой выбор ячейки RowFields
.Путь к выяснению, из какой позиции следует отступить, с какого Item
, в каком Field
...
Option Explicit
Sub WhatPosition()
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables(1)
Debug.Print "current cell selection is " & Selection.Address & _
" = '" & Selection.value & "'"
'--- is the selection within the row label range of the pivot table?
If Not Intersect(Selection, pt.RowRange) Is Nothing Then
Debug.Print "selection position = " & StringToPivotFieldPosition(pt, Selection.value)
Else
Debug.Print "the selection is not within the pivot table"
End If
End Sub
Private Function StringToPivotFieldPosition(ByRef pTable As PivotTable, _
ByVal value As String) As Long
Dim field As PivotField
StringToPivotFieldPosition = 0
For Each field In pTable.RowFields
Dim item As PivotItem
For Each item In field.PivotItems
If item.Name = value Then
StringToPivotFieldPosition = field.position
Exit Function
End If
Next item
Next field
End Function