Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1956to1960
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

Filter hervorheben: .xlsm - .xlam

Filter hervorheben: .xlsm - .xlam
04.12.2023 12:51:48
Erwin
Hallo,
mit Hilfe des Forums (https://www.herber.de/forum/archiv/1944to1948/1945310_Filter_bedingte_Formatierung_VBA.html) konnte ich mir ein gutes und funktionierendes Tool basteln, welches bei einem Filter die gefilterten Überschriften hervorhebt.
Beispiel als xlsm: https://www.herber.de/bbs/user/164734.xlsm
Jetzt habe versucht, das ganze in ein Excel-Add-In einzubinden; leider funktioniert das nicht 1:1.
Beispiel als xlam: https://www.herber.de/bbs/user/164735.xlam

Fehlerzeile und Fehlermeldung:
With .FormatConditions.Add(Type:=xlExpression, Formula1:="=af_krit(ZS)")
Laufzeitfehler ‘5’: Ungültiger Prozessaufruf oder ungültiges Argument

Ich habe herausgefunden, dass der Code „Public Function AF_KRIT… „ im .xlam, aber nicht in der Datei (.xlsx) ist, die ich verwende. Auch ist die bedingte Formatierung nicht erstellt worden.
Ich vermute, man müsste die beiden Module (Farbiger_Filter und myAfKrit) in diesem Zusammenhang bei Nutzung vorher noch in je ein neues Modul meines aktiven Blatts kopieren (falls nicht schon vorhanden – müsste geprüft werden).
Ob meine Vermutung stimmt, oder es ein anderes Problem gibt, weiß ich nicht, jedenfalls fehlen mir leider hierzu die Kenntnisse und Fähigkeiten ☹.
Kann mir bitte hier jemand helfen?

Danke schon mal - Erwin

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
04.12.2023 13:23:22
Yal
Hallo Erwin,

vermutlich, weil bei der Aufruf von UDF, die in einem Addin liegen, muss der Addin bei der Aufruf spezifiziert werden.
Wenn dein Addin "myFilter.xlam" heisst,
dann
With .FormatConditions.Add(Type:=xlExpression, Formula1:="='myFilter'!af_krit(ZS)")
oder
With .FormatConditions.Add(Type:=xlExpression, Formula1:="="myFilter.xlam'!af_krit(ZS)")

VG
Yal
AW: Filter hervorheben: .xlsm - .xlam
04.12.2023 13:56:20
Erwin
Hallo Yal,

ich habe ein wenig rumprobiert, leider ohne Ergebnis.
Die Prozedur bleibt immer, wie oben beschrieben, stecken.

Außerdem ist bei der Bedingten Formatierung in der aktuellen Datei (noch) nichts hinterlegt, sodass auch das Thema noch offen ist.

Gibt es noch andere Ideen?

Grüße - Erwin
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
05.12.2023 13:31:54
Erwin
Hallo,

trotz intensiver Bemühungen, konnte ich hier bisher selbst noch keinen Erfolg melden.

Gibt es denn keine Möglichkeit, Code aus einem .xlam Modul 1:1 in ein aktives xlsm zu kopieren (incl. Bedingter Formatierung)?

Ich kann es mir gerade nicht vorstellen (der Recorder hilft hier leider nicht).

Vielleicht kann sich jemand noch daran wagen?

Danke - Erwin
AW: Filter hervorheben: .xlsm - .xlam
05.12.2023 20:12:25
Yal
Hallo Erwin,

ich habe das Problem, dass ich mit einem beruflichen Rechner arbeite und die sog. "Gruppenrichtlinien" das Verwenden von Makros aus heruntergeladenen Dateien nicht zulässt. Ich kann den Code in normalen xlsm-Datei sehen und kopieren, aber nicht in der originalen Datei laufen lassen. Eine xlam, was eigentlich nur eine xlsm ohne Arbeitsblätter sein soll (so war es mindestens in den früheren Version von Excel), kann ich gar nicht öffnen. Ich bin eh davon ausgegangen, dass in xlam dieselbe Code wie xlsm vorhanden war.

Um einen kompletten Modul von einer Datei in die anderen zu kopieren, kann man einfach den Modul "verschieben". Es erzeugt automatisch eine Kopie. Alternativ ist, das Modul zu exportieren und dann zu importieren.

VG
Yal
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
05.12.2023 20:21:55
Erwin
Hallo Yal,

du hast recht, ein xlam ist eigentlich ohne Arbeitsblatt, und dort steht auch der Code.
In der aktuellen Datei sollte er angewandt werden können, das geht aber nicht wegen der Fehlermeldung, die ich ja schon eingangs gepostet habe.
Ich kann mir das schon zurechtzimmern, damit es bei mir klappt; ich kopiere manuell den Code aus dem xlam rein in das xlsm; passt.
Da ich das öfter am Tag machen darf und die Datei dann auch weitergegeben wird, sollte es eine Abkürzung auf Tastendruck geben :)

Ich lass noch einmal offen, für weitere Helfer.

Grüße - Erwin
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
05.12.2023 20:52:12
Yal
hallo Erwin,

neue Idee: eigentlich willst Du damit die komplette Spalte hervorheben, die gefiltert ist, richtig?
Dann reicht es in einer Zelle über das gefilterte Bereich die Funktion AF_Krit aufzusetzen, Parameter ist dann die erste Zelle in dem filterbare Bereich. Und das pro Spalte.
Dann hast Du in einer Zeile die Antwort, ob diese Spalte gefiltert ist oder nicht.
Dann das bedingte Formatierung auf dem Wert diese Zelle richten.

Du hast weiterhin das Problem, dass die Formel selbst nur funktioniert, wenn der Addin (xlam) stets geöffnet ist.

VG
Yal
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
05.12.2023 21:11:06
Erwin
Hallo Yal,

das ADDIN ist immer geöffnet, da es ja quasi in Excel selbst verankert ist und jede Datei, die ich öffne, kann darauf zugreifen.
Grundsätzlich möchte ich nur die beiden Kopfzeilen (i.d.R. Überschrift und Teilergebnis) hervorheben, damit es sich ein wenig abhebt.
Der Code funktioniert ja eigentlich ganz gut, aber nur dann wenn er in der jeweiligen Exceldatei (xlsm / xlsb) selbst vorhanden ist.
Was nicht geht ist, dass der Code aus der xlam eine aktive Exceldatei bedient.

Frage ein wenig anders formuliert: kann ich mit VBA Codezeilen von Xlam rauskopieren und in einer xlsm mit einem neuen Modul einfügen?
Anders kann ich es nicht erklären.

Grüße - Erwin
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
05.12.2023 23:10:58
Yal
Hallo Erwin,

Es sieht so aus, als bedingte Formatierung grundsächlich keine UDF akzeptiert, die nicht im eigener Datei vorliegen. Es kommt den Fehler "Dieser Bezugstyp kann nicht in Bedingte Formatierung-Formeln verwendet werden."

Module per VBA zu übertragen geht über Export/Import.
(abgeleitet aus https://www.herber.de/forum/archiv/644to648/644373_Makro_per_Makro_kopieren.html )
Private Sub myAfKrit()


On Error GoTo Errorhandler
Workbooks("myAfKrit.xlam").VBProject.VBComponents("myAfKrit").Export "C:\Temp\myAfKrit.txt"
ActiveWorkbook.VBProject.VBComponents.Import "C:\Temp\myAfKrit.txt"
Exit Sub

' Bei Fehlernummer 1004, diese Meldung ausgeben.
Errorhandler:
If Err.Number = 1004 Then
MsgBox "Das kopieren des VBA Moduls ist fehlgeschlagen!" & vbCr & _
"Bitte überprüfen Sie folgende Einstellung! " & vbCr & _
"EXTRAS -> MAKRO -> SICHERHEIT -> Vertrauenwürdige Quellen." & vbCr & _
"'Zugriff auf Visual Basic Projekt vertrauen' muss aktiviert sein! ", vbCritical, _
" Meldung vom Makro Module exportieren!"
Else
MsgBox "Err.Number = " & Err.Number & ". " & Err.Description, vbCritical
End If
' Fehlernummer löschen.
Err.Clear
End Sub
(ungestestet)

VG
Yal
Anzeige
AW: Filter hervorheben: .xlsm - .xlam
06.12.2023 07:19:38
Erwin
Guten Morgen YAL,

super, das ist genau das, was ich gesucht habe.
Es funktioniert einwandfrei.

Danke für deine ausgezeichnete Hilfe.

Grüße - Erwin

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige