+ Reply to Thread
Results 1 to 3 of 3

Sometimes macro count PivotTable values wrong.

Hybrid View

  1. #1
    Registered User
    Join Date
    04-02-2014
    Location
    Sverige
    MS-Off Ver
    Excel 2010
    Posts
    52

    Sometimes macro count PivotTable values wrong.

    Hi!

    I am workbook that has several pivottables in it. Each PT has it source from a different workbook. To sum all the values I'm using the following macro.

    Private Sub HämtaAlla()
    On Error GoTo Fel1
        
        Dim LastCellA As Range
        Dim LastCellB As Range
        Dim X As Range
        Dim Förband As Range
        Dim LastCellRowNumber As Long
        Dim WorkBookName1 As String
        Dim WorkBookName2 As String
        Dim FörbandNamn As String
        Dim Månad As String
        Dim ArbeteMånad As String
        Dim Y As String
        Dim Pt As PivotTable
        Dim Pf1 As PivotField
        Dim Pf2 As PivotField
        Dim iItem As Integer
        Dim iDatum As Integer
        Dim iNext As Integer
        Dim iNextDatum As Integer
        Dim AntFlikar As Integer
        Dim I As Integer
        Dim NuvarandeRepTid As Double
        Dim Slarv As Double
        Dim TotalReptid As Double
        Dim ArbetsOrder As Double
        Dim TotalArbetsOrder As Double
        
        WorkBookName1 = ActiveWorkbook.Name
        
        With Worksheets("Bataljon")
            .Range("B21").Formula = "=Sum(B19:AH19)"
            .Range("B7:AH18").Value = vbNullString
            .Range("A2").Value = vbNullString
            .Range("B22:B23").Value = "0.0"
        End With
    
        'Sätt AntFilkar lika med antalet flikar i arbetsboken.
        AntFlikar = ActiveWorkbook.Worksheets.Count
        
        If AntFlikar = 3 Then
            MsgBox "Det verkar inte finnas några databaser inlagda i RUUT! ", vbCritical, "Fel"
            Exit Sub
        End If
        
        'Börja med att uppdatera all data.
        ThisWorkbook.RefreshAll
        
        NuvarandeRepTid = 0
        Slarv = 0
        TotalReptid = 0
        ArbetsOrder = 0
        TotalArbetsOrder = 0
        
        'Loopa igenom de första flikarna, utom de två första (och en dold) flikarna eftersom det inte ska kopieras data därifrån.
        For N = 4 To AntFlikar:
        On Error Resume Next
            Set Ws = Worksheets(N)
            Sheet = Worksheets(N).Name
            
            Set X = Worksheets("Data").Range("A:A").Find(Sheet, after:=Worksheets("Data").Range("A19"), LookAt:=xlWhole, MatchCase:=False)
            Y = X.Offset(0, 1).Text
            
            With Ws
                Workbooks.Open(FileName:=Y).RunAutoMacros Which:=xlAutoOpen
                WorkBookName2 = ActiveWorkbook.Name
                Windows(WorkBookName1).Activate
                     
                Set Pt = Ws.PivotTables(1)
                Set Pf1 = Pt.PageFields(1)
                Set Pf2 = Pt.PageFields(2)
                     
                iNextDatum = 1
                iNext = 1
                
                For iItem = 1 To Pf1.PivotItems.Count
                    FörbandNamn = Pf1.PivotItems(iNext).Name
                    Pf1.CurrentPage = Pf1.PivotItems(FörbandNamn).Name
                        iNextDatum = 1
                        For iDatum = 1 To Pf2.PivotItems.Count
                            .Range("C2").Value = Pf2.PivotItems(iNextDatum).Name
                            Pf2.CurrentPage = .Range("C2").Value
                            Set LastCellA = .Cells(.Rows.Count, "A").End(xlUp)
                            Set LastCellB = .Cells(.Rows.Count, "B").End(xlUp)
                            LastCellRowNumber = Application.WorksheetFunction.Max(LastCellA.Row, LastCellB.Row)
                            TotalReptid = .Cells(LastCellRowNumber, "B").Value
                            ArbetsOrder = .Cells(LastCellRowNumber, "C").Value
                            TotalArbetsOrder = TotalArbetsOrder + ArbetsOrder
                            Slarv = Slarv + TotalReptid
                                If .Cells(LastCellRowNumber, "B").Value = "" Then GoTo Gåvidare1
                                Set Förband = Worksheets("Bataljon").Range("B6:AH6").Find(FörbandNamn)
                                For I = 1 To 12
                                    Månad = Worksheets("Data").Range("A" & I).Value
                                    Månad = Left(Månad, 7)
                                    ArbeteMånad = .Range("C2").Value
                                    ArbeteMånad = Left(ArbeteMånad, 7)
                                    If Månad = ArbeteMånad Then
                                        NuvarandeRepTid = Förband.Offset(I, 0).Value
                                        Förband.Offset(I, 0).Value = NuvarandeRepTid + TotalReptid
                                        NuvarandeRepTid = 0
                                    End If
                                Next I
    Gåvidare1:
                            iNextDatum = iNextDatum + 1
                        Next iDatum
                    iNext = iNext + 1
                Next iItem
            End With
            Workbooks(WorkBookName2).Close savechanges:=False
        Next
        
        On Error GoTo 0
        
        'Summerar värden och missade värden
        Worksheets("Bataljon").Range("B22").Value = Slarv - Worksheets("Bataljon").Range("B21").Value
        Worksheets("Bataljon").Range("B23").Value = Worksheets("Bataljon").Range("B21").Value + Worksheets("Bataljon").Range("B22").Value
        Månad = Left(Månad, 4)
        Worksheets("Bataljon").Range("A2").Value = Månad
        
        AntFlikar = ActiveWorkbook.Worksheets.Count
        For N = 4 To AntFlikar:
            With Ws
                Set Pt = .PivotTables(1)
                Set Pf1 = Pt.PageFields(1)
                Set Pf2 = Pt.PageFields(2)
                Pf1.EnableMultiplePageItems = True
                Pf2.EnableMultiplePageItems = True
            End With
        Next N
        
        MsgBox "Förbandsuppdelning av reperationstid är klar!" _
            & vbNewLine & vbNewLine & "Antal databaser: " & AntFlikar - 3 _
            & vbNewLine & "Total reptid: " & Worksheets("Bataljon").Range("B23").Value _
            & vbNewLine & "Antal arbetsordrar: " & TotalArbetsOrder, vbInformation, "Klart"
        
        NuvarandeRepTid = 0
        Slarv = 0
        TotalReptid = 0
        ArbetsOrder = 0
        TotalArbetsOrder = 0
        
    Exit Sub
    
        'I vissa fall kan funktionen hänga sig, istället för att Excel slutar fungera visas detta felmeddelande.
    Fel1:
            MsgBox "Ett fel har uppstått! ", vbCritical, "Fel"
    
    End Sub
    It opens each workbook that is used and updates the PT to current values, then it sums the values on another sheet to get the total from all. Thing is, for some reason the value sometimes is to high, if I manualy count the values I get a lower number. And most of the times the value is what it's supposed to be. Any ideas why it sometimes counts "wrong"?

    I can post a stripped down workbook if needed.

  2. #2
    Registered User
    Join Date
    04-02-2014
    Location
    Sverige
    MS-Off Ver
    Excel 2010
    Posts
    52

    Re: Sometimes macro count PivotTable values wrong.

    Also, there might be a variable or two that is used but not declared. Thats because it's set to "Public" in another macro.

  3. #3
    Registered User
    Join Date
    04-02-2014
    Location
    Sverige
    MS-Off Ver
    Excel 2010
    Posts
    52

    Re: Sometimes macro count PivotTable values wrong.

    Bump Bump Bump

+ Reply to Thread

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 6
    Last Post: 08-19-2015, 07:46 PM
  2. Replies: 0
    Last Post: 01-07-2013, 08:39 PM
  3. Macro deleting values on wrong sheet
    By randell.graybill in forum Excel Programming / VBA / Macros
    Replies: 8
    Last Post: 06-12-2009, 01:28 AM
  4. Range.columns.count property returns wrong count after union operation
    By gopinan in forum Excel Programming / VBA / Macros
    Replies: 2
    Last Post: 10-13-2008, 04:48 AM
  5. [SOLVED] PivotTable Macro Reverts to Count Function
    By LTofsrud in forum Excel Formulas & Functions
    Replies: 4
    Last Post: 02-08-2005, 06:06 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts

Search Engine Friendly URLs by vBSEO 3.6.0 RC 1