Clever-Excel-Forum

Normale Version: Runtime "91" Error - warum???
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo zusammen, 

ich möchte mit dem VBA unten aus einem Sheet gefilterte Daten ziehen und es als Tabelle formatiert auf einem anderen Sheet ausgeben. Dafür habe ich einen Advanced Filter geschaffen. Nun ist folgendes Problem. Wenn ich das Sheet aktiviere um die Tabelle upzudaten, bekomm ich immer den Runtime "91" = Object variable or With block variable not set  Fehler. Das lustige ist, daß wenn ich den Fehler beende, das Sheet verlasse und dann wieder aktiviere funktioniert alles wie gewollt. Ich habe festgestellt, dass mir Excel meine Tabelle "Overview_Opp" erstellt, aber zusätzlich noch eine 2. Tabelle erstellt, welche nur den Header von "Overview_Opp" beinhaltet, und sie diese eine Reihe dann Tabelle "Extract" benennt. Hat irgendjemand eine Idee wie ich aus diesem Runtime Fehler komme? Er wird mir im Debug im roten Bereich markiert......
 

Private Sub Worksheet_Activate()
 
Sheets("Opportunity One Pager").Cells.Clear
Sheets("NoTables").ListObjects("Table_OP").Range.AutoFilter
If Sheets("NoTables").ListObjects("Table_OP").AutoFilter.FilterMode = True Then Sheets("NoTables").ShowAllData
 
    With Sheets("NoTables").ListObjects("Table_OP").Range
      .AdvancedFilter Action:=xlFilterCopy, _
                      CriteriaRange:=Sheets("Update_Info").Range("A1").CurrentRegion, _
                      CopytoRange:=Sheets("Opportunity One Pager").Range("A1"), _
                      Unique:=False
    End With
   
   With Sheets("Opportunity One Pager")
    .Range("A1").CurrentRegion.Offset(, 8).ClearContents
    .ListObjects.Add(xlSrcRange, .Range("A1").CurrentRegion, , xlYes).Name = "Quickview_Opp"
   End With
 
    Range("Quickview_Opp[[#Headers],[Region]]").Select
    Selection.ListObject.ListColumns(1).Delete
    ActiveCell.FormulaR1C1 = "Nr."
    Range("A2").Select
    ActiveCell.FormulaR1C1 = "1"
    Range("A2").Select
    Selection.AutoFill Destination:=Range("Quickview_Opp[Nr.]"), Type:= _
        xlFillSeries
    Range("Quickview_Opp[Nr.]").Select
Columns("A:G").Select
    Columns("A:G").EntireColumn.AutoFit
  
End Sub
 
Code:
.AutoFilter.FilterMode

trenne die beiden doch mal auf.  Wenn keinen Autofilter gibt, dann kannst du auch dessen Eigenschaft nicht setzen.
Hallöchen,

bei mir zeigt Excel ein seltsames Verhalten.

Folgendes Tabellenobjekt:

Arbeitsblatt mit dem Namen 'Tabelle1'
A
1Was
21
32
43
Verwendete Systemkomponenten: [Windows (64-bit) NT 10.00] / MS Excel 365
Diese Tabelle wurde mit Tab2Html (v2.7.2) erstellt. ©Gerd alias Bamberg

Filterung wurde ausgeschalten.
Irgendeine Zelle des Tabellenobjektes ist selektiert

Folgender Code:

Code:
Sub test()
ActiveSheet.ListObjects(1).Range.AutoFilter
If ActiveSheet.ListObjects(1).AutoFilter.FilterMode = True Then ActiveSheet.ShowAllData
End Sub

Schrittweise Ausführung.

erstes F8
Sub test() wird gelb markiert
Filter wird aktiviert !!!

zweites F8
Zeile Sub test() wird abgearbeitet
ActiveSheet.ListObjects(1).Range.AutoFilter wird gelb markiert
Filter wird wieder deaktiviert !!!

drittes F8
Zeile ActiveSheet.ListObjects(1).Range.AutoFilter wird abgearbeitet - zuvor deaktivierter Filter aber nicht wieder gesetzt.
If ... wird gelb markiert

viertes F8
If ... bleibt gelb, Fehlermeldung 91 erscheint


... ist irgendwie unlogisch. Excel hat irgendwie ein Problem mit der schrittweisen Ausführung beim Autofilter Sad


Lösung dürfte übrigens diese Variante des Schaltens des Autofilters sein, also statt

ActiveSheet.ListObjects(1).Range.AutoFilter

besser

ActiveSheet.ListObjects(1).ShowAutoFilter = True

und ebenfalls nicht nur im Einzelschritt testen Smile