Supportnet / Forum / Tabellenkalkulation
Anfangszeilen-u. Spalten einfärben
Frage
Hallo Excel-Gemeinde!
Ich hätte da mal wieder eine Frage! Mit dem untenstehenden Makro kopiere ich Pivottabellen in eine neues Arbeitsblatt. Da die Tabellen in unterschiedlichen Zeilen beginnen können, bräuchte ich:
1. einen Befehl zum Zentrieren der ersten drei Zeilen
und
2. einen Befehl der mir die ersten drei Zeilen sowie die ersten drei Spalten jeder Tabelle einfärbt (z. B. gelb).
Geht sowas? Wäre echt super, wenn mir jemand helfen könnte.
Gruss
Ines
[code]Sub AuswertungKostenGebäudeGesamt()
Dim pvtTable As Object 'WICHTIG für das Durchlaufen von Pivotelementen
Dim Tabellenname As String
Dim i As Integer, Zz As Integer
Sheets("Daten Kosten").Select
Cells(1, 1).Select
'Auswertungsgrad 1
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
ActiveCell.CurrentRegion).CreatePivotTable TableDestination:="", _
TableName:="PivotTable11", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable11").ColumnGrand = False
ActiveSheet.PivotTables("PivotTable11").AddFields RowFields:=Array( _
"KoSt-Gruppen-Bezeichnung", "KoSt-Bezeichnung")
ActiveSheet.PivotTables("PivotTable11").PivotFields("Saldo").Orientation = _
xlDataField
' Beginn des Durchlaufens von Pivotlementen, um nicht gewünschte auszuschalten
Set pvtTable = ActiveSheet.PivotTables("PivotTable11")
Set pvtTable = ActiveSheet.PivotTables("PivotTable11")
For Each pvtitem In pvtTable.PivotFields("KoSt-Gruppen-Bezeichnung").PivotItems
' MsgBox pvtitem.Name
If pvtitem.Name <> "Gebäude" Then pvtitem.Visible = False
' Hier werden alle Kostenträger ausgeschaltet mit Ausnahme von 999
' Soll nur 999 ausgeschaltet werden, muss die Zeile lauten:
' If pvtitem.Name = "999" Then pvtitem.Visible = False
Next
' Ende des Durchlaufens von Pivotelementen
' Tabellenname erhält den Name des Blattes mit der Pivottabelle
Tabellenname = ActiveSheet.Name
Range("A3").Select
ActiveSheet.PivotTables("PivotTable11").PivotFields(Range("A3").Value). _
Function = xlSum
Range("B5").Select
With ActiveSheet.PivotTables("PivotTable11").PivotFields("Summe von Saldo")
.NumberFormat = "#,##0.00"
End With
ActiveSheet.PivotTables("PivotTable11").PivotSelect "", xlDataAndLabel, True
Selection.Copy
Windows("Auswertung.XLS").Activate
Sheets("Gebäude").Select
i = Cells(Rows.Count, 1).End(xlUp).Row
Cells(i, 1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Columns("A:Z").AutoFit
Windows("Modul 1.XLS").Activate
Sheets(Tabellenname).Select
ActiveWindow.SelectedSheets.Delete
Sheets("Daten Kosten").Select
Cells(1, 1).Select
'Auswertungsgrad 2
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
ActiveCell.CurrentRegion).CreatePivotTable TableDestination:="", _
TableName:="PivotTable12", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable12").ColumnGrand = False
ActiveSheet.PivotTables("PivotTable12").AddFields RowFields:=Array( _
"KoSt-Gruppen-Bezeichnung", "KoSt-Bezeichnung"), ColumnFields:=Array("Kost2", _
"KoTr-Bezeichnung")
ActiveSheet.PivotTables("PivotTable12").PivotFields("Saldo").Orientation = _
xlDataField
' Beginn des Durchlaufens von Pivotlementen, um nicht gewünschte auszuschalten
Set pvtTable = ActiveSheet.PivotTables("PivotTable12")
For Each pvtitem In pvtTable.PivotFields("KoSt-Gruppen-Bezeichnung").PivotItems
' MsgBox pvtitem.Name
If pvtitem.Name <> "Gebäude" Then pvtitem.Visible = False
' Hier werden alle Kostenträger ausgeschaltet mit Ausnahme von 999
' Soll nur 999 ausgeschaltet werden, muss die Zeile lauten:
' If pvtitem.Name = "999" Then pvtitem.Visible = False
Next
' Ende des Durchlaufens von Pivotelementen
' Tabellenname erhält den Name des Blattes mit der Pivottabelle
Tabellenname = ActiveSheet.Name
Range("A3").Select
ActiveSheet.PivotTables("PivotTable12").PivotFields(Range("A3").Value). _
Function = xlSum
Range("B5").Select
With ActiveSheet.PivotTables("PivotTable12").PivotFields("Summe von Saldo")
.NumberFormat = "#,##0.00"
End With
Range("C3").Select
ActiveSheet.PivotTables("PivotTable12").PivotFields("Kost2").Subtotals = Array( _
False, False, False, False, False, False, False, False, False, False, False, False)
Rows("4:5").Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlBottom
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveSheet.PivotTables("PivotTable12").PivotSelect "", xlDataAndLabel, True
Selection.Copy
Windows("Auswertung.XLS").Activate
Sheets("Gebäude").Select
i = Cells(Rows.Count, 1).End(xlUp).Row
Cells(i + 6, 1).Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
xlNone, SkipBlanks:=False, Transpose:=False
Selection.Columns.AutoFit
Windows("Modul 1.XLS").Activate
Application.CutCopyMode = False
Sheets(Tabellenname).Select
ActiveWindow.SelectedSheets.Delete[/code]
Antwort 1 von mkburg
mit bedingter Formatierung müstest du das hin kriegen.
Antwort 2 von want2cu
Hallo INes,
ich möchte mkburgs Tipp noch ein wenig ergänzen: die Funktionen ZEILE() und SPALTE() können deine Frage Nr. 2 lösen.
Als VBA-Unwissender kann ich dir ansonsten leider nicht weiter helfen.
CU
want2cu
ich möchte mkburgs Tipp noch ein wenig ergänzen: die Funktionen ZEILE() und SPALTE() können deine Frage Nr. 2 lösen.
Als VBA-Unwissender kann ich dir ansonsten leider nicht weiter helfen.
CU
want2cu

