Dlaczego to wywołanie PivotItem.Visible wywołuje błąd TypeMismatch?
To nas zaskakuje. Mam standardową tabelę przestawną z filtrem raportu, który umożliwia wielokrotny wybór elementów. Mogę pobrać wybrane elementy z filtru raportu za pomocą:
Dim pi As PivotItem
For Each pi In PivotTables("MyPivot").PivotFields("MyField").PivotItems
If pi.Visible Then
Debug.Print pi.Value
End If
Next
Prosty. Moja kolega ma standardową tabelę przestawną z filtrem raportu, który umożliwia wielokrotny wybór elementów. Próbuje uzyskać wybrane elementy w filtrze raportu za pomocąten sam kod:
Dim pi As PivotItem
For Each pi In PivotTables("HisPivot").PivotFields("HisField").PivotItems
If pi.Visible Then
Debug.Print pi.Value
End If
Next
I dostaje błąd niezgodności typupi.Visible
. Wiemy toVisible
jest własnością wpi
, jak po wpisaniupi.
Intellisense pojawia się wraz ze wszystkimiPivotItem
właściwości i metody (jak można się spodziewać). Wiemy, że pi zawiera prawidłowy PivotItem, jako wywołaniepi.Value
drukuje wartość poprawnie (usuwającIf
/End If
instrukcje pozwalające na wydrukowanie wartości bez względu na to, czy wydrukuje każdy element na liście). Nie ma nic specjalnego w jego filtrze raportów - nie jest to pole obliczeniowe ani nic podobnego. Większość innych właściwościPivotItem
także nie.
Czy ktoś wie dlaczegoPivotItem
pokaże to zachowanie? TheOdniesienie do MSDN wydaje się raczej niewystarczający.