Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1228to1232
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
Inhaltsverzeichnis

VBA Umstellung XP auf 2010

VBA Umstellung XP auf 2010
Jens
Guten Morgen,
habe folgendes Problem bei einer Auswahl eines Pivottabellenfeldes per Makro:
Sheets("Kennzahlen").Select
ActiveSheet.PivotTables("PivotTable1").PivotFields("Gesellschaft").CurrentPage _
= Gesellschaft
Dieser Ausdruck funktioniert nicht. Folgende Fehlermeldung erhalte ich:
Laufzeitfehler '5'
Ungültiger Prozeduraufruf oder ungültiges Argument
Ich verstehe auch nicht, warum dieser Ausdruck in anderen Sheets in der gleichen Datei funktioniert. Dementsprechend kann es wohl nicht an der Variable "Gesellschaft" liegen.
Neu Aufzeichnen mit dem Makrorekorder bringt auch nichts. Sobald ich die "harte" Gesellschaft durch die Variable ersetze, erhalte ich diesen Fehler.
Komisch ist, dass alles in XP funktioniert.
Würde mich über Rückmeldungen freuen!

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: VBA Umstellung XP auf 2010
05.09.2011 12:42:54
fcs
Hallo Jens,
ich hab unter Excel 2007 mal ein wenig experimentiert.
Ich konnte den Fehler reproduzieren, wenn in der Datenquelle in der Spalte "Gesellschaft" Zahlen als Texte vorliegen.
Also wenn Zahlen mit vorangestelltem Hochkomma (') eingetragen sind, die Zellen der Spalte als Text formatiert sind oder nach einem Datenimport als Text in den Zellen vorliegen.
Scheinbar werden bei der Übernahme der Daten in den Pivot-Bericht nummerische Texte von Excel in Zahlen umgewandelt. Leider weiss dann aber unter VBA die Page-Eigenschaft nichts davon.
War die gleiche Zahl sowohl als Text als auch als Zahl unter Gesellschaft eingetragen, dann stürzte Excel bei der Makroausführung ab.
Der Variablentyp für Gesllschaft sollte eigentlich String sein, da PageName auch einen String als Ergebnis zurückgibt.
Wichtig: Wenn Zahlen als Seiten, Reihen oder Spaltefelder verwendet werden, dann muss in der Datenquelle das Format (Text oder Zahl) in dem jeweiligen Feld( der Spalte) einheitlich sein, wenn man per VBA Eigenschaften setzen will.
Gruß
Franz
Anzeige
AW: VBA Umstellung XP auf 2010
06.09.2011 08:33:10
Jens
Hallo Franz,
vielen Dank!
Gruß, Jens
AW: VBA Umstellung XP auf 2010
09.09.2011 23:20:08
Ben
Hallo Franz,
ich habe ein sehr ähnliches Problem wie Jens und bin froh, einer Lösung nun schon näher gekommen zu sein.
Ich verwende ebenfalls ein Makro zum setzen der CurrentPage Eigenschaft, das nach der Konvertierung von Excel 2003 auf 2010 nicht mehr funktioniert, und das ausschließlich für ein Feld, das als Text formatierte Zahlen enthält.
Meine Datenquelle ist eine Oracle Tabelle, zu der Excel eine Datenbankverbindung über ODBC aufbaut. Die Daten in Oracle sind als VarChar (String) formatiert, enthalten aber Zahlwerte.
Leider habe ich nicht ganz verstanden, wie ich das Problem nun beheben kann. Muss ich die Zahlen in Oracle als Zahl formatieren oder irgendwie sicherstellen, dass sie tatsächlich als Text importiert werden?
Vielen Dank,
Benjamin
Anzeige
AW: VBA Umstellung XP auf 2010
10.09.2011 11:05:35
fcs
Hallo Ben,
ich hab es mit einer Text-Datei probiert.
a)Spalte mit den Zahlenwerten als Standard in eine Exceltabelle importiert
Auswertung der Pivot-Table mit Zahlen im Seitenfeld per Makro einstellen funktioniert
b)Spalte mit den Zahlenwerten als Text in eine Exceltabelle importiert
Auswertung der Pivot-Table mit Zahlen im Seitenfeld per Makro einstellen funktioniert nicht.
Ich keine/wenig Erfahrungen mit Datenbanken als Quelle für Pivotberichte.
Wenn du Herr/Eigentümer über die Daten in der Oracle-Datenbank bist, dann kannst du ja mal in einer Kopie der Datenbank probieren, ob die Pivot-Auswertung funktioniert, wenn die Feldeigenschaft auf nummerisch geändert wird.
Nachfolgend mein Testmakro zum Ändern des Seitenfelds.
Gruß
Franz

Sub PivotTableCurrentPage()
Dim wks As Worksheet, pvTab As PivotTable, pvField As PivotField, pvItem As PivotItem
Dim vPage As Variant
Set wks = Worksheets("Tabelle4") 'Tabellenblatt mit der Pivottabelle
Set pvTab = wks.PivotTables(1)
pvTab.RefreshTable
'Seitenfeld setzen
Set pvField = pvTab.PageFields("Nr") 'oder pvTab.PageFields(1)
'Alle Daten zum Seitenfeld anzeigen
vPage = "(All)"
pvField.CurrentPage = vPage
'Nach einander das Seitenfeld auf alle vorhanden Werte setzen
For Each pvItem In pvField.PivotItems
If MsgBox("Stop", vbOKCancel, "Pivot-Seiten anzeigen") = vbCancel Then Exit For
vPage = pvItem.Value 'oder pvItem.Name
pvField.CurrentPage = vPage
Next
Set wks = Nothing: Set pvTab = Nothing: Set pvField = Nothing: Set pvItem = Nothing
End Sub

Anzeige
AW: VBA Umstellung XP auf 2010
10.09.2011 14:14:56
Ben
Hallo Franz,
vielen Dank, das hat mir weitergeholfen. Ich habe eine Sicht auf die Datenbanktabelle generiert, in der ich die betreffende Spalte als Zahl umformtiert habe und die Datenquelle auf die Sicht geändert.
Mit als Zahl formatierten Zahlen hat es dann bei mir ebenfalls wieder geklappt.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige