Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Filterung von VBA-Datenbank

Filterung von VBA-Datenbank
18.07.2016 12:21:45
VBA-Datenbank
Guten Tag,
ich habe eine kleine Datenbank geschrieben in der verschiedene Technologien für eine Abwärmenutzung und Abwasseraufbereitung aufgelistet sind. Diese Technologien für die Abwärmenutzung sind z.B. mit Kriterien beschrieben wie Temperaturniveu, Trägermedium oder Abwärmeleistung und weiteren. Mit dem kleinen VBA-Programm das ich erstellt haben soll es einem Anwender ermöglicht werden diese Datenbank anhand der beschriebenen Kriterien zu filtern. Die Kriterien sind dabei sowohl in Textform (z.B. Trägermedium = gas) also auch in Zahlenform (z.B. Abwärmeleistung = 140MW) enthalten.
Das Problem, was ich aktuell habe liegt bei den Kriterien in Zahlenform (Temperaturniveau und Abwärmeleistung). Es gibt in der Datenbank auch Technologien die im Bereich von 0,01MW = 10KW oder 0,001MW = 1KW bis 140MW liegen. Wenn ich jetzt nach dem Wert 0,1 suche oder nach einer anderen Zahl wie 8 oder 90 passiert leider gar nichts. Das Gleiche gilt für den Bereich Temperaturniveau wenn ich hier nach Temperaturen von z.B. -100°C oder -50°C suche passiert ebenfalls nichts.
Das war erst einmal die Beschreibung der Ausgangslage, nun versuche ich noch das Problem genauer zu beschrieben.

Das Problem:

Um auf das Problem zu stoßen, öffnet man in dem Tabelleblatt "Filter" die Userform und klickt auf "weiter zu Phase 2" wenn man dort nun unter der Rubrik "Abwärmeleistung" z.B. eine der Zahlen "0,001, 1, 9, 140" eingibt und den Button "Filtern" anklickt, kommt nur die Fehlermeldung "No matching Data" und es passiert rein gar nichts. Fast genauso sieht es in der Rubrik "Temperaturniveu" aus, wenn man hier die Zahl "-100, -50" eingibt, erhält man die oben beschriebe Fehlermeldung, wenn man aber "10,20" eingibt und sucht funktioniert alles wunderbar, obwohl die gleichen Makros und Filter verwendet werden.
Das Problem liegt in der Userform für die Abwärme der Phase 2 [Bezeichnung: frmFilter1] ich möchte dies aber auch auf die Userform des Abwassers [Bezeichnung:frmFilterAbw1] übertragen können. Die verwendeten Filtermakros sind identisch und sind als "Filterme" im Modul1 (bzw. "FiltermeAb" im Modul2 für das Abwasser) beschrieben. Ich nehme an das entweder dort das Problem liegt oder im Quelltext für den Button zum filtern [Bezeichnung: cmdFilter_Click()] wo das vorher beschrieben Makro eingebunden ist. In dem Makro "Filterme" ist eine Toleranz eingebaut, damit der nächste Wert angezeigt wird, wenn der exakte nicht in der Datenbank enthalten ist, vielleicht hat das auch mit dem beschriebenen Problem zu tun.
Eigener Lösungs Ansatz:
Mit dem englischen Punkt bzw. Komma hatte ich auch schon rumprobiert da bin ich jedoch auch nicht weiter gekommen. Wenn in meiner Datenbank "0.1" steht und ich nach "0.1" in der Userform suche gibt es die gleiche Fehlermeldung wie oben beschrieben.
Ich hoffe, dass ich das Problem verständlich erklären konnte und mir von Euch, wer bei der Lösung helfen kann.
Vielen Dank im Voraus für Euer bemühen!
Hier ist noch mal der Link für die Datei:
https://www.herber.de/bbs/user/106971.zip
Mit freundlichen Grüßen
Ned Flanders

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filterung von VBA-Datenbank
19.07.2016 12:47:48
VBA-Datenbank
Hallo Ned,
ohne mir die Datei angesehen zu haben, als kleiner Denkansatz:
Kann es sein, dass die Abwärmeleistung kein Zahlenformat ist, sondern ein Textfeld in dem die Einheit eingetragen ist? Dann könnten vielleicht eine like suche helfen.
Wäre es bei den verschiedenen Einheiten KW, MW,... nicht sinnvoll, in das Datenfeld nur 1 Einheit einzutragen und bei anderen Angaben entsprechend bei der Eingabe umzurechnen?
Gruß
Jürgen
Advanced Filter: Kriterienbereich
20.07.2016 01:00:14
Michael
Hi,
der eine Fehler mit "-20" war, daß bei negativen Zahlen die Operatoren vertauscht werden müssen, denn sonst suchst Du bei der Eingabe von größer -18 bis kleiner -22, und es gibt schwerlich Zahlen, die beide Bedingungen erfüllen.
Des weiteren habe ich NUR im Kriterienbereich das Dezimalkomma durch den Punkt ersetzt.
Außerdem habe ich beim Hersteller gelesen, daß man die Kriterien mit "= bla" eingeben soll, was ich auch eingebaut habe. Sorry, den Link habe ich versaubeutelt...
Private Sub CopyZahl(rng1 As Range, rng2 As Range)
'Const Toleranz As Currency = 0.1    ' hier einstellen 0.1 = 10 % plus/minus
Const Toleranz = 0.1 ' warum as Currency?
If IsEmpty(rng1) Then
rng2 = ""
rng2.Offset(0, 1) = ""
Else
If rng1 >= 0 Then
rng2 = Replace("="">" & rng1 * (1 - Toleranz) & """", ",", ".")
rng2.Offset(0, 1) = Replace("=""" & rng1 * (1 + Toleranz) & """", ",", ".")
End If
End If
End Sub
Schöne Grüße,
Michael
Anzeige
AW: Advanced Filter: Kriterienbereich
20.07.2016 20:42:34
Ned
Hi,
vielen Dank für die schnelle Hilfe Michael das mit den Negativen Zahlen funktioniert echt super!
Nur das andere Problem mit der Abwärmeleistung konnte ich durch deine Tipps leider noch nicht lösen... Weil die Filterung in diesem Feld überhaupt nicht mehr funktioniert, egal ob man nach 0,1, 50, 100 oder 1000 sucht es passiert einfach gar nichts! Ich habe den Quelltext schon x-mal durchgeschaut nur das Problem, woran das liegt, sehe ich leider nicht... Sieht von euch, wo ich da einen Fehler reingebaut habe bzw. was dazu führt das die Filterung in der Kategorie "Abwärmeleistung" nicht funktioniert?
Hier ist noch die Datei:
https://www.herber.de/bbs/user/107127.zip
Vielen Dank
Gruß
Ned
Anzeige
AW: Advanced Filter: Kriterienbereich
20.07.2016 21:20:46
Michael
Hi,
entschuldige bitte, so "Heilige" wie der Flanders sind mir zuwider...
Also, das Problem ist, daß Du die Überschrift in Filter!W4 versaubeutelt hast: da fehlt die KW-Angabe in Klammern. Kopiere einfach mal I3 nach W4:X4.
Sorry, das hatte ich in meiner Testdatei schon gemacht, aber vergessen zu erwähnen.
Ich lade die Datei jetzt nicht nochmal hoch, es sei denn auf Zuruf, falls es damit bei Dir nicht klappen sollte.
Schöne Grüße,
Michael
"zuwider" war zu stark: "suspekt" paßt besser
22.07.2016 15:14:31
Michael
Hi Ned,
außerdem ist das BITTE nicht persönlich zu nehmen, es geht ja nur um die Figur im Film...
Schöne Grüße,
Michael
Anzeige
AW: "zuwider" war zu stark: "suspekt" paßt besser
24.07.2016 12:44:25
Ned
Hallo,
alles Gut ich habe das als kleinen Scherz verstanden! ;)
Kannst du bitte deine Datei hochladen das würde mir sehr helfen!
Vielen Dank für deine Hilfe.
Gruß
Ned
ok, Datei anbei
24.07.2016 15:45:21
Michael
Hi Ned,
anbei die Datei: ich habe mir Deine ZIP nochmal geschnappt und NUR die eine Überschrift (in "Filter"; "Filterab" habe ich nicht angesehen) kopiert (wie bereits beschrieben):
https://www.herber.de/bbs/user/107206.zip
Der Thread fliegt morgen aus der Anzeige raus: schlimmstenfalls mußt halt die Frage nochmal stellen, am besten mit Link auf hier...
Schöne Grüße,
Michael
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige