Hallo,
ja den Public-Modifier sollte man der Übersichtlichkeit halber besser setzen, ist hier aber nicht kriegsentsch., da dies der der Default-Modifier bei normalen Sub-Procs in VBA ist, kann also auch weggelassen werden...
Problem ist vielmehr, Du sprichst die Tabelle1 in Deiner PERSONAL.XLSB an, damit sprichst Du eben das Tabellenblatt in Deiner PERSONAL.XLSB an, nicht das Deiner jeweiligen aktiven Arbeitsmappe, wenn Du über den CodeName gehen willst (der TabBlatt-Name würde auch gehen) mußt Du das ActiveWorkbook-Objekt referenzieren:
Option Explicit
Public Sub MICHID()
Dim obWorksheet As Worksheet
Dim Bereich As Range
Set obWorksheet = GetSheetByCodeName("Tabelle1")
If Not obWorksheet Is Nothing Then
Set Bereich = obWorksheet.UsedRange
Bereich.AutoFilter Field:=1, Criteria1:="MO367"
Set Bereich = Nothing
Set obWorksheet = Nothing
End If
End Sub
Private Function GetSheetByCodeName(ByVal pvstrName As String) As Object
Dim objSheet As Object
For Each objSheet In ActiveWorkbook.Sheets
If objSheet.CodeName = pvstrName Then _
Set GetSheetByCodeName = objSheet: Exit For
Next
Set objSheet = Nothing
End Function
Aufruf Deiner Sub-Proc MICHID per Code dann über die Application.Run-Methode aus Deiner jeweil. Mappe....oder händisch über den Makro-Dialog.
Gruß,
|