2016-11-23 4 views
0

ich diesen Code haben:VBA-Code auf allen Arbeitsmappen zu arbeiten

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 

Lastrow = ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row  

If ActiveWorkbook.Name Like "FR_*" And WorksheetFunction.CountIf(ActiveSheet.Range(Cells(4, 12), Cells(Lastrow, 12)), "<>Pending Distribution") > 0 Then 
    MsgBox "Warning, column L has values other than Pending Distribution" 
    Cancel = True 
End If 

End Sub 

Es funktioniert, wenn es in die Arbeitsmappe in vba gespeichert, aber es funktioniert nicht in Personal.xlsb

Ich möchte mach es auf ALL Arbeitsmappe arbeiten, die mit FR_ beginnen, aber es funktioniert nicht, obwohl ich ActiveSheet und ActiveWorkbook verwende, warum?

+0

helfen sollte, Sie werden auf Anwendungsebene aussehen müssen, um eine AddIn mit vielleicht –

Antwort

1

mit der persönlichen wie diese

Public WithEvents CUSTOM_EXCEL As Excel.Application 

Private Sub CUSTOM_EXCEL_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean) 
Lastrow = Wb.ActiveSheet.Cells(Rows.Count, 12).End(xlUp).Row 
If Wb.Name Like "FR_*" And WorksheetFunction.CountIf(Wb.ActiveSheet.Range(Cells(4, 12), _ 
    Cells(Lastrow, 12)), "<>Pending Distribution") > 0 Then 
    MsgBox "Warning, column L has values other than Pending Distribution" 
    Cancel = True 
End If 
End Sub 

Private Sub Workbook_Open() 
    Set CUSTOM_EXCEL = Application 
End Sub 

enter image description here

+0

es nicht funktioniert, überprüfen Sie meinen großen Beitrag – Sam

+0

Was ist der Fehler, müssen Sie wb nicht verwenden, in der Unter –

+0

Active ich tat und immer noch nicht funktioniert, wo genau sollte dieser Code in Personalakte aufgenommen werden, in Thisworkbook oder in einem gewissen Modul? – Sam

Verwandte Themen