Makro ausführen bei Zelländerung
08.02.2013 14:12:32
Gerhard
folgendes Problem: Ich möchte, dass ein Makro läuft sobald ich eine Zelle ändere:
Dies hat auch gut geklappt mit folgendem Code:
CODE IN DER TABELLE:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Application.DisplayAlerts = False
If Target = Range("CC_1") Then
Application.ScreenUpdating = False
Dim PIV As Object
Sheets("CC DETAIL").Select
For Each PIV In ActiveSheet.PivotTables
PIV.PivotFields("Func. Area").ClearAllFilters
PIV.PivotFields("Func. Area").CurrentPage = Range("CC_1").Text
Next
Sheets("CC DETAIL (2 months)").Select
For Each PIV In ActiveSheet.PivotTables
PIV.PivotFields("Func. Area").ClearAllFilters
PIV.PivotFields("Func. Area").CurrentPage = Range("CC_1").Text
Next
Sheets("CC DETAIL Pay Free").Select
For Each PIV In ActiveSheet.PivotTables
PIV.PivotFields("Func. Area").ClearAllFilters
PIV.PivotFields("Func. Area").CurrentPage = Range("CC_1").Text
Next
Sheets("CC DETAIL Pay Free (2 months)").Select
For Each PIV In ActiveSheet.PivotTables
PIV.PivotFields("Func. Area").ClearAllFilters
PIV.PivotFields("Func. Area").CurrentPage = Range("CC_1").Text
Next
Call AutofitColumn
Sheets("COST CENTER REPORT").Select
Application.ScreenUpdating = True
End If
End Sub
CODE IN EINEM MODUL DER GLEICHEN ARBEITSMAPPE
Sub AutofitColumn()
Sheets("CC DETAIL").Select
Cells.EntireColumn.AutoFit
Sheets("CC DETAIL (2 months)").Select
Cells.EntireColumn.AutoFit
Sheets("CC DETAIL Pay Free").Select
Cells.EntireColumn.AutoFit
Sheets("CC DETAIL Pay Free (2 months)").Select
Cells.EntireColumn.AutoFit
End Sub
Nach jeder Ausführung dieses Makros muss ich allerdings die Tabelle, in der der erste Code enthalten ist, mit Move or Copy seperat abspeichern und vorher alle Werte mit CopyPasteSpecialValues hardcoden. Wenn ich dies dann mache, kommt jedesmal dann eine Fehlermeldung, das Sub "AutofitColumn" nicht definiert sei. Das Problem ist, dass eben immer dieses Makro wieder läuft in der kopierten Tabelle und dann die Sub
"AutofitColumn" nicht gefunden wird. Kann man obigen Code auch so gestalten, dass dieser nur im personal.xls gespeichert ist und keine Fehlermeldungen beim Herauskopieren mehr auftauchen?
Vielen Dank vorab!
Gerhard