Thema Datum  Von Nutzer Rating
Antwort
09.11.2022 09:19:24 Verena
NotSolved
Blau Mehrere Kriterien in Array über Autofilter
09.11.2022 10:33:05 Mase
NotSolved
09.11.2022 13:16:26 Gast78161
NotSolved
09.11.2022 13:35:36 Mase
NotSolved

Ansicht des Beitrags:
Von:
Mase
Datum:
09.11.2022 10:33:05
Views:
425
Rating: Antwort:
  Ja
Thema:
Mehrere Kriterien in Array über Autofilter

arrBereich = Worksheets("Splitting").Range("$A$2:$A$" & lngZeileMax).Value

Du bekommst hier ein Array - allerdings ein zweidimensionales Array.

Besser:

arrBereich = Application.Transpose(Worksheets("Splitting").Range("$A$2:$A$" & lngZeileMax).Value


Weitere Anmerkungen, wenn Du erlaubst:

Worksheets("Abnahmen").Select

Das ist unnötig. Kannst rauslöschen.


With Tabelle3
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row

Da Tabelle3 der Codename für das Arbeitsblatt "Splitting" zu sein scheint, kannst Du das in dem With-Rahmen folglich auch zu Nutze machen:

With Tabelle3
lngZeileMax = .Range("A" & .Rows.Count).End(xlUp).Row
 
   arrBereich = .Range("$A$2:$A$" & lngZeileMax).Value

Aber auch das ist wieder doppelt gemoppelt und liesse sich noch verkürzen und übersichtlicher gestalten:

    With Tabelle3
        .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Select
    End With

Das .Select (oder auch .Activate) versucht man natürlich stets irgendiwe zu vermeiden. In unserem Fall können wir das sogar ganz gut wie folgt verwenden:

    With Tabelle3
       arrBereich =  .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value
    End With

Bzw wie oben bereits angemerkt:

    With Tabelle3
        arrBereich = Application.Transpose(.Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)).Value)
    End With


Worksheets("Abnahmen").Range("$A$1:$R$1000").AutoFilter (...)

Da es hier so ausschaut, also ob in SpalteA alle Zeilen lückenlos untereinander UND in Zeile 1 alle SPalten lückenlos nebeneinander sind, genügt:

Worksheets("Abnahmen").Range("A1").AutoFilter (...)

 

Ganz gut wäre jetzt noch, Worksheets("...") zu vermeiden, da dort eigentlich ActiveWorkbook.Worksheets("...") steht - sieht man halt nicht.

In manchen Fällen könnte das zu Problemen führen, weil ActiveWorkbook nicht das Workbook ist, auf welches Du Deinen Code ausführen möchtest.

Entweder das Workbook in einer ObjektVariablen referenzieren und voranstellen => ObjektVariable.Worksheets("...")

oder (falls der Code sich in derselben Mappe befindet ThisWorkbook voranstellen => ThisWorkbook.Worksheets("...")


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
09.11.2022 09:19:24 Verena
NotSolved
Blau Mehrere Kriterien in Array über Autofilter
09.11.2022 10:33:05 Mase
NotSolved
09.11.2022 13:16:26 Gast78161
NotSolved
09.11.2022 13:35:36 Mase
NotSolved