Userform zur Dateneingabe soll auch als Suchfunktion verwendet werden.
#11
Hallöchen,

wenn Du mal den Code für zwei Filter getrennt aufzeichnest, bekommst Du was in der Art:



Arbeitsblatt mit dem Namen 'Tabelle1'
AB
1WerWas
2Anton1
3Berta2
4Anton3
5Berta4
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg

Code:
Sub Makro1()
'
' Makro1 Makro
'

'
    ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=1, Criteria1:="Anton"
End Sub

Arbeitsblatt mit dem Namen 'Tabelle1'
AB
1WerWas
2Anton1
4Anton3
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg

Code:
Sub Makro2()
'
' Makro2 Makro
'

'
    ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=2, Criteria1:=">1", _
        Operator:=xlAnd
End Sub

Arbeitsblatt mit dem Namen 'Tabelle1'
AB
1WerWas
4Anton3
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg


Relevant ist da der Operator.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#12
(20.03.2021, 09:05)schauan schrieb: Relevant ist da der Operator.

Erstmal vielen Dank, das Du Dir das mal angesehen hast.

Code:
    .Range("ah4:ah" & .UsedRange.Rows.Count).AutoFilter _
    Field:=34, Criteria1:=ComboBox2.Value
       
    '.Range("aj4:aj" & .UsedRange.Rows.Count).AutoFilter _
    'Field:=36, Criteria1:=ComboBox3.Value, _
    'Operator:=xlAnd
Ich habe den Code mal kopiert, wobei ich die zweite .range-Abfrage erstmal wieder rausgenommen habe, da letztendlich das Ergebnis das Gleiche ist. Nur mit der ersten Range Zeile funktioniert alles, sobald die 2. eingefügt wird funktioniert auch die 1. nicht mehr! Zu Operator habe ich jetzt auf die Schnelle auch keine Codebeispiele gefunden, die mir erklären, was die Zeile "Operator:=xlAnd" macht oder wofür diese stehen soll.

Kannst Du das mit den "Operator" mal erläutern?

Gruß
Roy
Top
#13
Hallo Roy,

habe für dich mal ein alternatives Suchformular entwickelt, das über die gesamte Liste sucht, auch nach Textteilen. Die Treffer werden dann in einen Listenfeld angezeigt. Hier hönnte man (noch nicht eingebaut), dann eine Feinauswahl vornehmen. Diese Suche könnte man auch in dein Hauptformular intergrieren.


Angehängte Dateien
.xlsm   ESF-Regelungskompendium (2).xlsm (Größe: 485,53 KB / Downloads: 3)
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top
#14
Hallo Roy,

das mit dem Operator erklärt sich fast von selbst Smile Die Zeile heißt ja komplett
Operator:=xlAnd

Du hast praktisch einen Filter UND einen zweiten ... In dem Fall bezieht sich das auf die zweite Spalte. Wenn Du das in weiteren Spalten fortsetzt, geht es im Prinzip immer so weiter.

Beim Aufzeichnen könntest Du auch mal ODER ausprobieren. Da kommt dann was in der Art raus für Beginnt mit A oder B:

ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=1, Criteria1:="=A*", _
Operator:=xlOr, Criteria2:="=B*"
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#15
(20.03.2021, 11:05)Klaus-Dieter schrieb: Hallo Roy,

habe für dich mal ein alternatives Suchformular entwickelt, das über die gesamte Liste sucht, auch nach Textteilen. Die Treffer werden dann in einen Listenfeld angezeigt. Hier hönnte man (noch nicht eingebaut), dann eine Feinauswahl vornehmen. Diese Suche könnte man auch in dein Hauptformular intergrieren.

Hallo Klaus-Dieter,
vielen Dank, dass Du Dir das mal angesehen hast. Allerdings komme ich mit einer Freitextsuche überhaupt nicht dahin, wo ich hin möchte. Zur Erklärung: Diese Tabelle soll für meinen Arbeitsbereich (ESF-Förderung des Landes NRW) eine Zusammenfassung aller Regelungen ergeben, die sich in 5 Jahren angesammelt haben. Zur Zeit ist es so, dass es in dem Bereich viele Regelungsbereiche gibt, die u.a. mit Erlassen, Rechtsvorschriften, Einzelfallentscheidung ect. geregelt werden. Dabei gibt es schon die Probleme bei der Benennung einzelner Förderprogramme. Der eine Spricht von "Kommunale Koordinierung", ein andere von "KoKo", wieder ein andere von "Schulprogramm des Landes bei den Kommunen". Hier sieht man schon das Problem der "Freitextsuche", denn schon bei einem Begriff gibt es "mindestens" 3 unterschiedliche Benennungen. Und das ist nur ein Beispiel von vielen.

Aber trotzdem vielen Dank, denn Dein Code hat mir schon etwas weitergeholfen bei einem andern Problem mit meiner Tabelle.

Eigentlich hab ich ja schon eine Möglichkeit gefunden, was allerdings dazu führen würde, dass ich die "Eingabemaske" nochmals überarbeiten müsste. Denn die "If-Then"Schleife funktioniert ja soweit schon, wie du aus der Beispieltabelle ersiehst. Somit wäre die einfachste Lösung für jeden notwendigen Suchbegriff ein Spalte zu reservieren. Dann würde ich bei der Eingabe wir bei der bisherigen Eingabe einfach die gesamte Tabelle mit "ja" (und ergänzend mit "nein") füllen. Lediglich die wichtigen Felder "Regelung (Detail-Volltext) und Hinweis-Anmerkungen, sowie die Datumseingabe wären noch als übrig, wenn ich das Problem mit den Comboboxen nicht gelöst bekomme. Werde da nicht aufgeben und erstmal den u.a. Tipp weiter verfolgen.

Nochmals herzlichen Dank für Deine Mühe!

(20.03.2021, 12:11)schauan schrieb: Hallo Roy,

das mit dem Operator erklärt sich fast von selbst Smile Die Zeile heißt ja komplett
Operator:=xlAnd

Du hast praktisch einen Filter UND einen zweiten ... In dem Fall bezieht sich das auf die zweite Spalte. Wenn Du das in weiteren Spalten fortsetzt, geht es im Prinzip immer so weiter.

Beim Aufzeichnen könntest Du auch mal ODER ausprobieren. Da kommt dann was in der Art raus für Beginnt mit A oder B:

ActiveSheet.Range("$A$1:$B$5").AutoFilter Field:=1, Criteria1:="=A*", _
  Operator:=xlOr, Criteria2:="=B*"

Irgendwie macht er hier mit dem "Operator:=Or" genau das gleiche. Sobald diese Zeile aktiviert ist, funktioniert die Suche nicht mehr richtig.

Könnte es vielleicht daran liegen, dass ich in den darüberliegenden Anfragen im Code "immer" Criteria1 genommen habe? Es sind allein 32 anfragen über "if-Then", bei denen ich immer Criteria1 verwende. So würde ja immer das Criteria1 überschrieben, wobei es bis zur 32 Zelle kein Problem ist, da dort erst der Autofilter gesetzt und danach "Criteria1" überschrieben wird. Dann kommt die Checkbox und dann die die Comboboxen. Oben ist es zwar kein Problem, aber ich weiß es auch nicht genau.

Wenn ich die Codezeile richtig verstanden habe, ist die Variable Criteria1 nur dazu da, das Kriterium des Autofilters zu setzen. Sobald der Autofilter dann gesetzt ist, dürfte er doch überschrieben werden. Oder nicht?
Top


Gehe zu:


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