Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
972to976
972to976
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Pivot wählen und formatieren - nah dran!

Pivot wählen und formatieren - nah dran!
07.05.2008 18:06:00
Andreas
Hallo Herber Fans,
ich habe heute doch einiges über den Einsatz von VBA in Pivot Tabellen gelernt. Ich habe aus diversen früheren Ansätzen ein Makro zusammengesetzt welches sinngemäß folgendes prüft.
Wie viele Pivot Tabellen sind auf dem Blatt vorhanden. Wenn Anzahl = 0, dann Exit sub
Wenn 1 dann kommt eine Messagebox, auf der der User auf die Pivot clicken soll, die formatiert werden soll.
Nun wissen allen nachfolgenden Codezeilen, in welcher (!) Pivot sie agieren sollen. Dann kommt eine Abfrage, wie viele Dezimalstellen, etc.
So weit die Theorie… Ich sehe vor lauter Code und Test Fragmenten schon nicht mehr durch. Ich glaube ich bin nah dran, aber das diese Verschachtelung des IF Pfades korrekt läuft, bekomme ich einfach nicht hin.
Könnt ihr mir den Hinweis geben, warum das nicht so funktioniert. Wo ist in der Anordnung der einzelnen Prüfungen der Fehler?
https://www.herber.de/bbs/user/52207.xls
Vielen Dank und Grüße,
Andreas Hanisch

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
PivotCache ist jedenfalls FALSCH
07.05.2008 18:19:00
NoNet
Hallo Andreas,
ich habe mal kurz über den Code drübergeschaut und dazu folgende Tips :

  • Eine PivotTabelle kann nicht über ihren PivotCacheIndex eindeutig identifiziert werden, da es auch vorkommen kann, dass mehrere PIVOT-Tabelle den gleichen Datenbestand als Datenquelle verwenden und daher den gleichen CacheIndex haben.
    Also : z.B. 5 PIVOT-Tabelen teilen sich 2 CacheIndizes
    siehe auch hier : http://spotlight-wissen.de/lisp/pages/messages/amse-1155038998-32546
  • Definiere die Variable i als STRING, dann kannst Du den Namen der PIVOT-Tabelle der angeklickten Zelle auslesen :
    i = PivotIdent.PivotTable.Name (anstatt : i = PivotIdent.PivotTable.CacheIndex)
    Da dieser auf jedem Tabellenblatt eindeutig ist, kannst Du damit die PIVOT-Tabelle eindeutig referenzieren. Dazu musst Du noch nicht mal den Code ändern, da anstelle des Index einer Pivot-Tabelle auch der Name als Argument verwendet werden kann !

Für weitere Anregungen fehlt mir jetzt die Zeit, da ich jetzt auch Feierabend habe
Gruß, NoNet

Anzeige
AW: PivotCache ist jedenfalls FALSCH
07.05.2008 19:55:00
Andreas
Hallo NoNet,
vielen Dank für Deinen Hinweis mit dem Pivot Cache. Ich habe es nun folgendermaßen gelöst. Es soll so sein, daß, wenn es nur eine PivotTabelle gibt, der User überhaupt keine Inputbox bekommt.
Also: Wenn Pivotanzahl = 1, dann i = ActiveSheet.PivotTables(1).Name. Wenn die Anzahl ungleich 1 ist, dann: i = pivotident.PivotTable.Name
Das Ansprechen funktioniert korrekt. Bei zwei Pivots auf einem Blatt funktioniert das auch. Aber wenn nur eine pivot da ist, sollte IF ja einen anderen Weg einschlagen und direkt zur Frage nach den Dezimalstellen führen. Das tut es aber nicht. Der Sub endet sang und klanglos... Ich bin hier vorm Rechner total angefressen. Ich bekomme es nicht hin und sehe vermutlich den Wald vor lauter Bäumen nicht...
Kannst Du Dir bitte noch einmal den IF Pfad ansehen, ob das so überhaupt funktionieren kann?!
Dank und Gruß, Andreas

Anzeige
AW: PivotCache ist jedenfalls FALSCH
08.05.2008 07:21:07
Luschi
Hallo Andreas,
hier mal mein Vba-Code dazu:

Sub Pivot_Formatieren()
Dim PivotIdent As Range
Dim AnzahlPivot As Long
Dim pvField As PivotField, strFmt As String, varInp, Nullvalues As Variant
Dim pvTable As PivotTable
AnzahlPivot = ActiveSheet.PivotTables.Count
''MsgBox AnzahlPivot
Select Case AnzahlPivot
Case 0
Exit Sub
Case 1
Set pvTable = ActiveSheet.PivotTables(1)
Case Else   ' mehr als 1 Pibottabelle
On Error Resume Next
Set PivotIdent = Application.InputBox("Es sind mehr als 1 Pivot Tabelle vorhanden, " &  _
_
"bitte auf die zu formatierende clicken:" & vbLf & _
"Abbrechen verläßt den Formatierungsvorgang.", "Pivot Identifikation",  _
Type:=8)
On Error GoTo 0
If PivotIdent Is Nothing Then
Exit Sub
Else
On Error Resume Next
Set pvTable = PivotIdent.PivotTable
On Error GoTo 0
If pvTable Is Nothing Then
MsgBox "Ihre Auswahl liegt nicht in einer Pivottabelle", 16, "Makroende"
Set PivotIdent = Nothing
Exit Sub
End If
End If
End Select
MsgBox pvTable.Name
varInp = Application.InputBox("Bitte Dezimalstellen eingeben:" & vbLf _
& "Abbrechen verläßt die Pivot Formatierung.", "Dezimalstellen", 2, Type:=1)
If VarType(varInp) = vbBoolean Then Exit Sub
'# # # Nullwerteeinstellung_START
Nullvalues = MsgBox("Sollen Nullwerte angezeigt werden?", vbYesNo, "Nullwerte")
If Nullvalues = vbYes Then
ActiveWindow.DisplayZeros = True
ElseIf Nullvalues = vbNo Then
ActiveWindow.DisplayZeros = False
End If
'# # # Nullwerteeinstellung_ENDE
If varInp = 0 Then
strFmt = "#,##0_ ;[Red]-#,##0 "
Else
strFmt = "#,##0." & String(varInp, "0") & "_ ; [RED]-#,##0." & String(varInp, "0")
End If
For Each pvField In pvTable.DataFields
pvField.NumberFormat = strFmt
pvField.Function = xlSum
Next
Set pvField = Nothing
Set PivotIdent = Nothing
Set pvTable = Nothing
End Sub

Gruß von Luschi
aus klein-Paris

Anzeige
AW: PivotCache ist jedenfalls FALSCH
08.05.2008 10:13:58
Andreas
Hallo Luschi,
nach dem gestrigen ein wenig frustrierenden Tag in der VBA Welt, sieht es heute schon wieder viel besser aus. Ich habe Deinen Code eingesetzt und getestet. Bei der Inputbox hat mir der Editor etwas rot eingefärbt, das habe ich aber hinbekommen und so läuft der Code nun astrein durch.
Das es eine Select Case Anweisung gibt, wußte ich, aber das ist das erste Mal, daß ich sie an einem optimalen Beispiel im Einsatz sehe. Danke. Ich werde mich nun an diesen Code erinnern, wenn ich ähnlich Fälle habe und vielleicht nicht mehr so viel mit IF machen. Man lernt halt nie aus…
Vielen Dank Dir!!!
Grüße aus Berlin,
Andreas Hanisch
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige