Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

SpezialFilter automatisieren...
#11
Hallo André, ich glaube, ich habe mich falsch ausgedrückt, obwohl ich's die ganze Zeit schreibe... ... ich wollte den KriterienBereich dynamisch festlegen per Formel. Ähnlich dem DruckBereich. Dort tritt dieses Phänomen auf, wenn ich in den Druckeinstellungen etwas verändere, dass dieser hart überschrieben wird...


Ich bin aber schon an einer neuen Sache dran, wo ich in jedem Fall VBA brauche. Selbes Thema, aber dazu später mehr...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#12
Hallo Jörg,

die Ursache für das "Excel"-liegt auch nicht im ENTF. Benenne Deinen Bereich mit den Kriterien mal anders, dann klappt es. Der Name "Suchkriterien" wird vom Spezialfilter genutzt, dadurch kommt es mit Deiner Variante zu Überschneidungen :s
Wenn Du den Spezialfilter in einer leeren Excelmappe mit Kriterien usw. manuell ausführst, dürften im Anschluss Bereichsnamen im Namensmanager eingetragen sein, ohne Dein weiteres Zutun.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Jockel
Antworten Top
#13
Hi André, klar - wie doof von mir - klappt wie Türe "im Zug"...!!! Jetzt will ich einen flexibleren Bereich "bespaßen" immer beginnend in A1 aber der Bereich kann bis zur n-ten Spalte gehen und soll bis zur letzten belegten Zeile gehen... ... ich versuche mich erstmal mit Formeln zu behelfen... ... nachher in der Arbeit... Mal sehen, wie weit ich komme... Danke für's Erste...:100:
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#14
Hallo @all, da ich ja sowieso VBA einsetze zudem mein Vorhaben mit Formeln mehr als schwer umsetzbar ist, hier jetzt die neue Herausforderung zum selben Thema... Ich bräuchte einen Code zum Festlegen eines dynamischen Bereichs...

Ich habe folgenden Bereich zur Verfügung..:

Arbeitsblatt mit dem Namen 'Kriterien'
 ABCDEFGHIJK
1           
2           
3           
4           
5           
6           
7           
8           
9           
10           
Diese Tabelle wurde mit Tab2Html (v2.4.1) erstellt. ©Gerd alias Bamberg

Der Bereich, den ich brauche beginnt immer mit A1... ich brauche immer die jeweils letzte befüllte Spalte und die jeweils letzte befüllte Zeile in diesem Bereich. Besonderheit: A1 bis K1 kann auch leer sein. Also: wenn keine Überschrift und die Zellen A2, B2 und C2 sind beschrieben, brauche ich A1:C2. Ist nur A2 beschrieben A1:A2. Gibts Überschriften: A1 bis letzte befüllte Spalte (maximal K) und letzte belegte Zeile in diesem Bereich...

puhhhh... ... geht das..?
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#15
... es müßte doch ein Leichtes für VBA-Profis sein, ein solchen Bereich zu markieren... oder täusche ich mich..?
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#16
Hallo jörg,

ich wusste gar nicht, dass der Spezialfilter ohne Überschrift(en) funktioniert,
außer man macht es mit Funktionen: Spezialfilter (3) - Filtern mit Funkionen

Und ich bin mir sicher, dass Du sofort eine Beispieldatei gefordert hättest. Wink

Gruß Uwe
Antworten Top
#17
Hallo Uwe, in einem hast Du teilweise Recht... es geht auch um Formeln im SpezialFilter... (M)eine (Beispiel)Datei denke ich, brauche ich nicht hochladen, weil erstens die genauen Formeln doch egal sind und zweitens die meisten Sachen eben nicht mit Formeln abgedeckt werden sollen... Ich brauche nur diesen beschriebenen Bereich als KriterienBereich... Wenn es aber unabdinglich sein sollte, werde ich natürlich eine posten...
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#18
Hallo Jörg,

im Grunde brauchst Du nur eine VBA - Codezeile, etwas in der Art:

Code:
myLastCell = "$A$1:" & rngBereich.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Address

Bei einem leeren Bereich hast Du dann "$A$1:" und müsstest den Doppelpunkt wegnehmen oder die Adresse in zwei Schritten aufbauen:

Code:
myLastCell = rngBereich.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Address
if myLastCell = "" then myLastCell = "$A$1" else myLastCell = "$A$1:" & myLastCell


Ich habe hier mal ein etwas komplexeres Excel-Beispiel aufbereitet. Es gibt ein Sub und eine Funktion. In der Funktion ermittle ich mit Find die Adresse. Im Sub sind dann noch einige Fallunterscheidungen.

Code:
Sub test()
'Variablendeklaration - string
Dim strAdresse$
'Funktion zur Ermittlung der letzten Zelle aufrufen
strAdresse = myLastCell(Sheets("Tabelle1").Range("A1:K10"))
'Wenn nichts gefunden, dann (Bereich ist gaenzlich leer)
If strAdresse = "" Then
  'Meldung ausgeben
  MsgBox "Bereich leer"
'oder wenn Funktion ein Ergebnis liefert, dann
Else
  'Bei Fehler mit naechster Codezeile fortfahren
  On Error Resume Next
  'Wenn die Zelle leer ist, dann (kann eigentlich nicht sein, oder bei Formel)
  If Range(strAdresse) = "" Then
    'Wenn Code einen Fehler erzeugt, dann
    If Err Then
      'Meldung ausgeben
      MsgBox "Fehler"
    'oder Wenn Code keinen Fehler erzeugt
    Else
      'Meldung ausgeben
      MsgBox "Zelle leer (enthält eine Formel)"
    'Ende Wenn Code einen Fehler erzeugt, dann
    End If
  'odder wenn die Zelle nicht leer ist,
  Else
    'Meldung ausgeben
    MsgBox "$A$1:" & strAdresse
  End If
'Ende Wenn nichts gefunden, dann (Bereich ist gaenzlich leer)
End If
End Sub

Function myLastCell(rngBereich As Range) As String
'Findet die Adresse der letzte belegte Zelle in einem eingeschaenkten Bereich.
'Die Excel-VBA-Funktion UsedRange laesst sich nur auf das ganze Blatt anwenden.
'Bei Fehler weitermachen
On Error Resume Next
'Adresse der letzten belegte Zelle im Bereich finden
myLastCell = rngBereich.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Address
'Fehlerbehandlung zuruecksetzen
On Error GoTo 0
'Bei Fehler Fehlermeldung mitnehmen
If Err Then myLastCell = Err.Description
End Function
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#19
Hi André, ich habe ehrlich gesagt keine Ahnung was der Code macht, Du hast das zwar schön dokumentiert... ... aber: habe ich mich falsch ausgedrück? Sehe ich nur die Lösung nicht..?

Ich brauche für meinen SpezialFilter

CriteriaRange:=Range( _"Suchkriterien")

das rote... ... und das rote ist der Bereich, den ich beschrieben habe... ... so langsam glaube ich, dass das ein Thema für's Excle-Treffen ist... (Ich muss dort wohl jemanden betrunken machen, damit er/sie mich versteht... ... oder wir uns)
Gruß Jörg
ich muss mich erst wieder ganz langsam heran robben. Also bitte ich um Nachsicht

"Wer immer tut, was er schon kann, bleibt immer das, was er schon ist." - Henry Ford
Antworten Top
#20
Hallo Jörg,

hättest Du mal nach der ersten codezeile aufgehört zu Lesen :21:

also, wenn DU den Bereich nur im VBA verwendest, dann so:

Code:
myLastCell = "$A$1:" & rngBereich.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Address
... CriteriaRange:=Range(mylastcell)

Du hattest gesagt, dass der Bereich ganz leer sein kann.
Daher besser mit dem zweiten Beispiel:

Code:
myLastCell = rngBereich.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Address
if myLastCell = "" then myLastCell = "$A$1" else myLastCell = "$A$1:" & myLastCell
... CriteriaRange:=Range(mylastcell)
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste