Microsoft Office Forum [ www.Office-Fragen.de ] >> READONLY <<

Microsoft Office 2003-2019 => Excel => Thema gestartet von: pesca am Dezember 06, 2011, 09:26:50 Vormittag

Titel: Excel2007 Hilfe bei Fehlersuche in Kopiermakro
Beitrag von: pesca am Dezember 06, 2011, 09:26:50 Vormittag
Hallo,

mein Problem ist, dass das Makro einen Wert des Filters auf "#N/V" setzt. Der Filter ist Bestandteil einer Pivottabelle. Die Einträge in der Tabelle ändern sich nicht sondern nur der Eintrag im Filter.

Funktion des Markos:
Auslesen einer Zelle in Datei B. Anschließend in Datei A einen Filter auf den ausgelesenen Wert setzt.
Dann wird im Excelsheet eine Berechnungn durchgeführt und der berechnete Wert in Datei B geschreiben. Anschließend wird der nächsten Wert wert in den Filter gesetzt usw. Bis alle Werte/Filtereinträge durchlaufen sind.


Ich hoffe, dass mir jemand helfen kann.

Mit freundlichen Grüßen
Daniel

Code: Visual Basic
  1. Sub Filterübertragen()
  2. Dim i, j, x, kw As Integer
  3. Dim line As String
  4. Dim A, B As Worksheet
  5. Dim Piv As PivotField
  6. i = 3
  7. j = 2
  8.  
  9. 'Workbooks.Open Filename:="H:\Daten\A.xlsx"
  10. 'Workbooks.Open Filename:="H:\Daten\B.xlsx"
  11. Set A = Workbooks("A.xlsx").Sheets("TabelleX")
  12. Set B = Workbooks("B.xlsx").Sheets("TabelleY")
  13. Set Piv = A.PivotTables("PivotTable2").PivotFields("c2")
  14.  
  15. B.Activate
  16. Do Until Cells(2, j) = ""
  17. j = j + 1
  18. Loop
  19.  
  20. B.Range(Cells(2, j - 1), Cells(77, j - 1)).Copy
  21. B.Cells(2, j).PasteSpecial
  22.  
  23. x = Cells(2, j - 1)
  24. kw = Mid$(x, 3)
  25. Cells(2, j) = "KW" & kw + 1
  26.  
  27.  
  28. Do Until Cells(i, 3) = ""
  29. line = B.Cells(i, 3)
  30.  
  31. If line = "a" Or line = "b" Or line = "c" Or line = "d" Or line = "e" Then
  32. B.Cells(i, j) = 0
  33. Else
  34.  
  35. Piv.CurrentPage = (line)
  36. Calculate
  37. A.Range("F17").Copy
  38. B.Cells(i, j).PasteSpecial Paste:=xlPasteValues
  39.  
  40. End If
  41.  
  42. i = i + 1
  43. Loop
  44.  
  45. B.ChartObjects("Diagramm 1").Activate
  46. ActiveChart.SetSourceData Source:=Range(Cells(2, 3), Cells(77, j))
  47. End Sub
  48.  

Titel: Antw: Excel2007 Hilfe bei Fehlersuche in Kopiermakro
Beitrag von: Officer am Dezember 06, 2011, 10:12:16 Vormittag
Hallo pesca,

könntest Du bitte die Beispieldatei hochladen (+Erweiterte Optionen...). Dann könnte ich mir das mal am "lebenden" Objekt ansehen! ;)

Gruß

Officer
Titel: Antw: Excel2007 Hilfe bei Fehlersuche in Kopiermakro
Beitrag von: pesca am Dezember 06, 2011, 11:17:59 Vormittag
Hallo Officer,

leider darf ich die Datei nicht hochladen. Ich mache momentan ein Praktikum und soll mitunter diese Datei Auswerten und wollte mit mit dem Makro das regelmäßige aktivieren von einem dutzend Filterwerten vereinfachen. Ich werde versuchen die Datei abzuwandeln damit ich sie hochladen kann, kann aber nichts versprechen, da sie sehr umfangreich ist. Vielleicht hat ja jemand schonmal einen vergleichbaren Fehler gehabt.

Mit freundlichen Grüßen
Pesca
Titel: #NV! ist in VBA : CVERR(xlErrNA)
Beitrag von: NoNet am Dezember 20, 2011, 11:01:02 Vormittag
Hallo pesca,

ich habe das Problem nicht ganz erfasst, versuche aber mal das nach meinem Verständnis wiederzugeben :

- Eine PIVOT-Tabelle enthält mehrere Werte im ZEILEN-Bereich und im DATEN-Bereich zugehörige Werte
- Die ZEILEN-Werte werden einzeln (per Schleife) abgearbeitet und in einer anderen Datei als AUTOFILTER-Wert eingesetzt
- einer der ZEILEN-Werte in der PIVOT-Tabelle kann #NV! sein
- Was passiert nun bei #NV! ? - Oder was SOLL damit passieren oder NICHT passieren ?

Den Wert #NV! kann man in VBA mit CVERR(xlerrNA) abfangen !

Gruß, NoNet
Titel: Antw: Excel2007 Hilfe bei Fehlersuche in Kopiermakro
Beitrag von: Thomas Ramel am Dezember 21, 2011, 06:42:32 Vormittag
Grüezi Daniel

Du kannst Felder in einer Pivot-Tabelle nicht einfach mit der Zell-Adresse ansprechen, das wird nicht zuverlässig klappen.

Zeichne das ändern eines Filters im Berichtsfilter mal mit dem Makro-Recorder auf und sieh dir dann diesen Code an. Das kannst Du dann verwenden um den Filter zu verändern.

Aber am besten machst Du wirlkich eine Demo-Mappe mit rerpäsentativen Werten damit wir uns das genauer ansehen können. Achte darauf, dass zumindest die Felder der PT genau so heissen wie im Original.