Kezdőlap › Fórumok › Excel programozás › [Resolved] Kimutatások automatikus elkészítése › Hozzászólás: [Resolved] Kimutatások automatikus elkészítése
2024-04-05-14:29
#10578
Kedveseim! Nagyon köszönöm!
Képzeljétek, megoldottam. 3 napom ment rá. (Tudom, jó béna vagyok)
Kicsit csentem innen, kicsit kérdeztem onnan… De megoldottam.
Mondtam is a főnöknek, elmentem pezsgőt bontani… 🙂
Íme a művem:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ws As Worksheet
Dim tbl As ListObject
Dim pivotDestRange As Range
Dim pivotCache As pivotCache
Dim pivotTable As pivotTable
Dim lastColumn As Long
Dim i As Integer
Dim foundK As Boolean
Dim cell As Range
If Me.Name = "Munka1" Then
If UCase(Left(Target.Cells(1, 1).Value, 1)) = "K" Then
Set ws = ThisWorkbook.Sheets("Munka1")
For Each tbl In ws.ListObjects
If UCase(Left(tbl.HeaderRowRange.Cells(1, 1).Value, 1)) = "K" Then
Set pivotDestRange = tbl.Range.Cells(1, tbl.Range.Columns.Count + 2)
On Error Resume Next
If pivotDestRange.pivotTable Is Nothing Then
Set pivotCache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=tbl.Range)
Set pivotTable = pivotCache.CreatePivotTable(TableDestination:=pivotDestRange, TableName:="Kimutatas")
If i = 0 Then
pivotTable.Name = "Kimutatas_" & tbl.Name
i = 1
Else
pivotTable.Name = "Kimutatas_" & tbl.Name & "_" & i
End If
pivotTable.TableStyle2 = "Boss1"
pivotTable.TableRange2.Select
pivotTable.PivotFields(2).Orientation = xlDataField
End If
On Error GoTo 0
End If
Next tbl
End If
End If
If Not Intersect(Target, Me.UsedRange) Is Nothing Then
Application.EnableEvents = False
ActiveWorkbook.RefreshAll
Application.EnableEvents = True
End If
End Sub
Azért csatolom a fájlt is, amiben működik.
A kimutatás formázásával még küzdök, de már alakul.