Hallo!
Klingt klasse!!! XLA? Funktion? *stotter*
Also Makros kenne ich. Die kann ich aufzeichnen… :o)
Kannst Du mir das „einbinden“ erklären?
Vielen Dank!!!
Snoef
Okay, let´s try it quickly:
Hinter den Makros verbirgt sich die Programmiersprache Visual Basic in der speziellen Ausprägung „VB_A_“ (for Applications), und die findet man in allen Office-Applikationen.
Makros kann man aufzeichnen, wie Du weisst, aber natürlich auch selbst schreiben. Gespeichert werden sie im Office-Dokument selbst.
Hinterlegt werden sie (innerhalb des Dokuments) in separaten Modulen, Klassen bzw. Formularen, oder sie werden im Kontext enzelner Tabellenblätter oder Arbeitsmappen notiert (bei Excel). Das kann man im VBA-Editor erkennen.
Der Code wird in Form von Prozeduren oder Funktionen implementiert, die (ggf. mit Parametern) aufgerufen werden können. Der Unterschied ist, dass Funktionen einen Rückgabewert liefern. In Excel sind die eingebauten Standard-Funktionen bekannt, z.B. Heute() oder Wochentag(A1;2). Man kann solche Funktionen aber auch selber schreiben.
Damit zum praktischen Teil: Die unten stehende Funktion muss also der Excel-Tabelle, in der sie aufgerufen werden soll, verfügbar gemacht werden.
Möglichkeit 1: Sie wird im Dokument selbst hinterlegt. Das hat den Vorteil, dass sie beim Verteilen des Dokuments immer dabei bleibt. Nachteil ist, dass sie in anderen Dokumenten nicht ohne weiteres genutzt werden kann. Nachteil auch: Man bekommt beim Öffnen immer eine Makro-Meldung.
Möglichkeit 2: Sie wird in einem Add-In hinterlegt. Das wir in die Applikation Excel eingebunden und steht damit allen dort geöffneten Dokumenten zur Verfügung. Nachteil: Das Add-In muss beim Versenden einer „Nutzer“-Datei mitgeschickt und auf dem Zielrechner eingebunden werden.
Nach dem Schema funktionieren auch Standard-Add-Ins, die man z.T. mitgeliefert bekommt.
In Deinem Falle brauchen wir die zweite Möglichkeit, weil Du eine Datei reinbekommst, die das Makro natürlich nicht enthält.
Vorgehensweise:
- Ein leeres Dokument öffnen.
- Am besten alle Tabellenblätter löschen bis auf eins (hat nur Einfluss auf die Dateigröße).
- Speichern der Datei als Add-In (ganz unten in der Liste). Z.B. „MeineMakros.xla“. Den vorgegebenen Pfad am besten lassen erstmal.
- [Alt]+[F11] drücken, um den VBA-Editor zu starten (Menü Extras ginge auch)
- Dort ggf. angezeigte Code-Fenster schliessen (Kreuz-Klick), bis nur noch eine graue Fläche, der Projekt-Explorer und ggf. die Eigenschaften übrig sind (nur der Übersichtlichkeit wegen)
- Im Projekt-Explorer das eigene XLA raussuchen, mit rechts draufklicken und ein Modul einfügen. Das sollte dann als weisses Code-Fenster erscheinen.
- Dort die unten stehende Funktion einfügen.
- VBA-Editor schliessen.
- Datei speichern.
Nun muss das Teil noch Excel bekanntgemacht werden:
- Menü Extras / Add-In-Manager aufrufen,
- Eigenes XLA in der Liste suchen und ggf. hinzufügen („Durchsuchen“).
- XLA anticken.
- Manager schließen.
Jetzt sollte man die Funktion wie unten beschrieben nutzen können. Als Bereich kann dabei natürlich auch eine einzelne Zelle angegeben werden.
Filtern: Daten/Filter/AutoFilter mal ausprobieren.
Kristian
Diese Funktion hier einbinden (z.B. per XLA), in der Tabelle
eine neue Spalte einführen und dort „=Farbig(A1:smiley:1)“ oderso
hinschreiben. Dann nach „WAHR“ filtern. Sollte gehen:
Function Farbig(Bereich As Range) As Boolean
Dim Zelle As Range
Farbig = False
For Each Zelle In Bereich
Farbig = Farbig Or (Zelle.Interior.ColorIndex xlNone)
Next Zelle
End Function 'Farbig