2016-04-23 19 views
0

Ich habe eine Pivot-Tabelle in einem Excel-Arbeitsblatt. Es hat ein Feld namens "Season", das ein Berichtsfeld mit Mehrfachauswahl und einigen leeren Werten ist. Ich möchte sehen, ob die leeren Werte im Filter (d. H. Sichtbar) mit dem folgenden Code ausgewählt werden.So erkennen Sie die Sichtbarkeit des leeren PivotItem

Sub ShowVisbilityOfBlankItem() 

    Dim PivotField As PivotField 
    Set PivotField = ActiveSheet.PivotTables(1).PivotFields("Season") 

    Dim PivotItem As PivotItem 
    Set PivotItem = PivotField.PivotItems("(blank)") 

    Debug.Print PivotItem.Visible ' Runtime Error 13: Type mismatch 

End Sub 

Die letzte Zeile führt jedoch zu einem Laufzeitfehler 13: Typ stimmt nicht überein. Dies passiert nicht für andere PivotItem s. Ist das ein Fehler in Excel (2010) oder in meinem Code? Gibt es eine andere Möglichkeit festzustellen, ob Leerzeichen sichtbar sind?

Es ist möglich, die Sichtbarkeit des Zuschnitts PivotItem einzustellen. Außerdem zeigt das lokale Fenster einen Wert True für PivotItem.Visible, unabhängig davon, ob es sichtbar ist oder nicht.

+0

Ihr Code funktioniert für mich und gibt den richtigen Wert für '.Visible' zurück. Kein Fehler 13. – OldUgly

+0

Welche Version von Excel verwenden Sie? Ich arbeite in einer Unternehmensumgebung, in der ich die Excel-Version nicht auswählen kann. –

+0

Excel 2010 auf Win10. – OldUgly

Antwort

1

Nach einigen und immer den gleichen Fehler googeln, Ich habe diese Antwort auf eine andere Frage: https://stackoverflow.com/a/39107082/1626443

denke ich, das Problem auf die Version Excel Sprache verwandt ist, und es kann nur bearbeitet werden, wenn der Wert buchstäblich (blank). Ich benutze die deutsche Version und es war vorher (leer) und es hat nicht funktioniert. Diese

entfernt, um den Fehler für mich:

sStore = pi.Value 
pi.Value = sStore 
If pi.Visible Then 'no more error 

Hinweis, Sie müssen technisch es tun nur einmal und ich denke, der folgende Code sollte auch funktionieren:

If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = "(blank)" 

und möglicherweise auch diese eins:

If pi.Value = "(BLANK_IN_YOUR_LANGUAGE)" Then pi.Value = pi.Value 

Es ist ein extrem seltsamer und frustrierender Bug um ehrlich zu sein.

Ich weiß, das war vor einem Jahr, aber vielleicht noch hilft es Sie oder jemand anderes auf seiner Reise durch PivotItems.

+0

Ich kann bestätigen, dass das Problem nur auftritt, wenn die Sprache Deutsch ist und nicht wenn die Sprache Englisch ist (andere Sprachen nicht versucht). Es ist auch wahr, dass die Einstellung von 'PivotItem.Value = PivotItem' (einmal) den Laufzeitfehler aufhob. Allerdings kann ich immer noch das leere 'PivotItem' mit dem Wert' "(leer)" 'finden, obwohl auf dem Display' '(leer) '' steht. –

Verwandte Themen