folgender code führt zu einem fehler, der nachfolgend Excel sogar
komplett spinnen lässt, so dass ich es per Taskmanager abschiessen MUSS
[code].PivotFields("SAP document date").VisibleItems(1).LabelRange.Group
_
Start:=True, End:=True, _
periods:=Array(False, False, False, False, True, False,
True)[/code]
auch in leicht modifizierter Form:
[code].PivotFields("SAP document date").VisibleItems(1).Group _
Start:=True, End:=True, _
periods:=Array(False, False, False, False, True, False,
True)[/code]
wo liegt mein Fehler und wie geht es richtig?
Gruppierung über dieses Feld soll nach Jahren und Monaten erfolgen.
ausserdem soll das entsehende "Jahr" Feld auf 2010 voreingestellt werden
Volker
--
Wenn es vom Himmel Zitronen regnet -- lerne, Limonade zu machen.
beim Gruppieren darf nur eine Zelle des Bereichs selektiert sein.
Probiers mal so:
Dim pt As PivotTables
Set pt = ActiveSheet.PivotTables
With pt(1)
With .PivotFields("SAP document date")
With .DataRange.Cells(1)
.Group Start:=True, End:=True, Periods:=Array(False, _
False, False, False, True, False, True)
End With
End With
End With
Mit freundlichen Grüssen
Claus Busch
--
Win XP Prof SP2 / Vista Ultimate SP2
Office 2003 SP2 /2007 Ultimate SP2
> Dim pt As PivotTables
> Set pt = ActiveSheet.PivotTables
> With pt(1)
> With .PivotFields("SAP document date")
> With .DataRange.Cells(1)
> .Group Start:=True, End:=True, Periods:=Array(False, _
> False, False, False, True, False, True)
> End With
> End With
> End With
Demnach hat Michael Kofler in seinem Buch also unsinn geschrieben -
daher hatte ich nämlich meine erste codezeile (die mit LabelRange drin)
- danke für den Hinweis.
Übrigens bedauerlich, dass es offenbar in keinem Buch eine wirklich
ausführliche Darstellung des Themas "Pivottabellen mit VBA" gibt ...
[funktionierenden code]
Danke, das hat hervorragend geklappt.
Zusatzfrage:
wenn jetzt das Jahr 2010 voreingestellt sein soll - reicht es, dafür
einfach noch
PivotFields("Jahre").CurrentPage="2010"
zwischen Letztes und vorletztes End With zu schreiben?
was gruppierst du denn? Ein Seitenfeld (Berichtsfilter) oder ein
Zeilenfeld?
Du musst dann das Datum als Zahl bei Start und bei Ende eingeben, für
2010 dann also:
.Group Start:=40179, End:=40543 usw
Mit freundlichen Grüßen
Claus Busch
> On 8 Dez., 13:22, Volker Neurath <neande...@expires-31-12-2010.news-
> group.org> wrote:
>> wenn jetzt das Jahr 2010 voreingestellt sein soll - reicht es, daf r
>> einfach noch
>>
>> PivotFields("Jahre").CurrentPage="2010"
>>
>> zwischen Letztes und vorletztes End With zu schreiben?
> was gruppierst du denn? Ein Seitenfeld (Berichtsfilter) oder ein
> Zeilenfeld?
Uuups!
Stympt, das ist kein Seiten- sondern ein Spaltenfeld.
> Du musst dann das Datum als Zahl bei Start und bei Ende eingeben, für
> 2010 dann also:
> .Group Start:=40179, End:=40543 usw
Muss das wirklich in dieser Schreibweise erfolgen?!
Danke.
Am Wed, 08 Dec 2010 13:53:07 +0100 schrieb Volker Neurath:
> Muss das wirklich in dieser Schreibweise erfolgen?!
nein, du kannst es auch als Datum schreiben:
Start:=DateSerial(2010, 1, 1), End:=DateSerial(2010, 12, 31)
> Hallo Volker,
> Am Wed, 08 Dec 2010 13:53:07 +0100 schrieb Volker Neurath:
>> Muss das wirklich in dieser Schreibweise erfolgen?!
> nein, du kannst es auch als Datum schreiben:
> Start:=DateSerial(2010, 1, 1), End:=DateSerial(2010, 12, 31)
Danke.
Vorerst letzte Frage:
da in dem Datenbestand auch Zeilen ohne Datum in diesem Feld waren, habe
ich per code ein Dummy-Datum eingefügt, und zwar den 1.1.1900
Jetzt erscheint aber in dem Feld "Jahre" der Gruppierung *jedes* Jahr
zwischen 1900 und 2010, unabhängig davon, welche Jahre wirklich in dem
Bestand enthalten sind.
Lässt sich das ändern? wie?
Am Wed, 08 Dec 2010 14:11:56 +0100 schrieb Volker Neurath:
> da in dem Datenbestand auch Zeilen ohne Datum in diesem Feld waren, habe
> ich per code ein Dummy-Datum eingefügt, und zwar den 1.1.1900
>
> Jetzt erscheint aber in dem Feld "Jahre" der Gruppierung *jedes* Jahr
> zwischen 1900 und 2010, unabhängig davon, welche Jahre wirklich in dem
> Bestand enthalten sind.
bei mir erscheint nur das Jahr 1900. Die anderen Jahre dürften nicht
auftauchen, da sie in der Quelltabelle nicht vorhanden sind.
Und die Werte außerhalb 2010 kannst du ja ausblenden:
With ActiveSheet.PivotTables("PivotTable1").PivotFields("SAP document date")
.PivotItems("<01/01/2010").Visible = False
.PivotItems(">31/12/2010").Visible = False
End With
Claus Busch wrote:
> Hallo Volker,
>> Jetzt erscheint aber in dem Feld "Jahre" der Gruppierung *jedes* Jahr
>> zwischen 1900 und 2010, unabhängig davon, welche Jahre wirklich in dem
>> Bestand enthalten sind.
> bei mir erscheint nur das Jahr 1900. Die anderen Jahre dürften nicht
> auftauchen, da sie in der Quelltabelle nicht vorhanden sind.
Merkwürdig - bei mir werden in dieser Auswahlbox definitiv alle
Zwischenjahre angezeigt...
> Und die Werte außerhalb 2010 kannst du ja ausblenden:
> With ActiveSheet.PivotTables("PivotTable1").PivotFields("SAP document date")
> .PivotItems("<01/01/2010").Visible = False
> .PivotItems(">31/12/2010").Visible = False
> End With
Sehr schön - teste ich morgen ;)
Jetzt fällt mir aber gerade doch noch was ein:
wie weise ich einem Datenfeld eine andere Berechnungsanweisung zu?
Wenn ich schreibe:
...
.PivotFields("MeinFeld").orientation=xlDataField
wird das Feld ja mit der Standardfunktion eingerichtet, IIRC ist das
"Anzahl", ich erhalte dann ein Feld "Anzahl von MeinFeld"
Ich will da aber nun als Berechnung "Summe" drin haben.
Wie geht das per code?
Meine ganze aktuelle aktion mache ich für unsere Außendienstler - von
denen einige ziemliche EDV-Allergiker sind ;)