PDA

Vollständige Version anzeigen : Mehrere Filter mittels Makro setzen und als Add-In in Excel einbinden.


testig04
30.07.2012, 16:43
Hallo zusammen!

Ich habe folgendes Problem bei dem ich einfach nicht weiterkomme und hoffe ihr könnt mir vielleicht helfen.

Ich habe jeden Tag eine sehr umfangreiche Bauliste mit Teilen vor mir. (einen Auszug habe ich zum besseren Verständnis mit angehangen) Der obere, gelb markierte Bereich der Liste ist für mich weniger interessant. Wichtig ist hauptsächlich der untere Teil ab Zeile 35.

Da ich nur mit bestimmten KoGr arbeite, möchte ich gerne ein Makro schreiben, was automatisch nach den für mich wichtigen KoGr filtert (insgesamt 19 Stück). Bisher scrolle ich immer händisch bis zur Kopfzeile mit den Überschriften „Zone“, KoGr“, „AI“ usw. lösche die darunterliegende Zeile und setze mir dann den Filter in der Spalte KoGr. Natürlich ist es recht mühsam jedes Mal 19 Filter zu setzen und ich würde dies gerne automatisieren. An sich wäre das nicht allzu schwer, die Schwierigkeit besteht aber darin, dass die Kopfzeile nicht immer in Zeile 35 und die freie darunterliegende Zeile entsprechend nicht immer die Zeile 36 ist. Auch ist die Liste nicht immer gleich lang, sodass auch mal mehr oder weniger als (wie in diesem Fall) 347 Zeilen vorhanden sein können. Auch sind nicht immer sämtliche KoGr in einer Liste vorhanden, es können beispielsweise auch nur 5 der insgesamt 19 da sein.

Ich habe bereits begonnen ein Makro nach dem Wort „Benennung“ suchen zu lassen, dann die darunter liegende Zeile zu löschen und den Filter zu setzen. Jedoch wird dieser Filter immer auf feste Zeilen bezogen (nämlich wie hier 35 bis 347) und ich habe keine Idee, wie ich es schaffen kann, hier „relative Bezüge“ zu verwenden, da die Liste wie gesagt immer unterschiedlich lang ist.

Zu guter letzte würde ich das Makro dann natürlich gerne als Add-in in Excel einbinden, sodass es immer zur Verfügung steht. Jedoch erweist sich dies als gar nicht so leicht und ich habe das Problem, dass bisher keine Schaltfläche dafür angezeigt wird.

Vielleicht hat einer von euch eine Idee. Ich wäre sehr dankbar dafür! :)

Grüße

Marcel

josef e
30.07.2012, 17:36
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Marcel,

anbei ein Beispiel, gefiltert wird auf dem Blatt "Filter"


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

testig04
31.07.2012, 07:39
Hi Josef,

wie immer erst einmal besten dank für deine schnelle Hilfe!!!

Der Filter funktioniert perfekt! Jedoch habe ich etwas Schwierigkeiten das das Ganze ohne viel Aufwand für jede neue Bauliste zur Verfügung steht. Gibt es vielleicht noch eine andere Möglichkeit, als das Makro immer in die neue Datei zu kopieren und das Blatt "Filter" wie in deinem Beispiel vorzugeben?

Ideal wäre es natürlich wenn das Makro bei jedem Excel-Start zur Verfügung steht, beispielsweise direkt im Menüband und dann automatisch das zusätzliche Tabellenblatt "Filter" anlegt. Dann würde man wie jetzt auch die gewünschten KoGr eingeben und auf "start" drücken.

Ist so etwas grundsätzlich möglich?

Beste Grüße

Marcel

testig04
31.07.2012, 09:13
Hi Josef!

Ich bin mittlerweile soweit gekommen:

ich habe deinen Code als Excel Add-In (.xlam) gespeichert und so in jeder neuen Datei verfügbar gemacht. (im Screenshot "Modul2")

Dann habe ich einen Makro aufzeichnen lassen (Code siehe unten), der die Kopfzeile in ein neues Tabellenblatt kopiert, dieses in "Filter" umbenennt, ein Steuerelement hinzufügt und diesem den Makro "filterKOGR" von dir zuweist. Dieses Makro habe ich dann als "Modul1" ebenfalls in die Add-Ins kopiert um es bei jedem Excel-Start zur Verfügung zu haben. (im Screenshot "Modul1")

Als letztes habe ich einen Schnellzugriff auf das "Makro1" eingerichtet.

Wenn ich nun eine neue Bauliste öffne wird der Schnellzugriff wie gewünscht angezeigt. Beim Ausführen kommt jedoch eine Fehlermeldung an der Stelle ".ThemeColor= 2" und ich kann mir nicht so richtig erklären warum.

Hast du vielleicht eine Idee warum es nicht korrekt funktioniert? (Bitte nicht wundern das die Tabellenblätter anders als in dem ersten Auszug "DELM" und "BAU2" heißen.)

Beste Grüße

Marcel


Hier der Code des aufgezeichneten Makros:

Option Explicit

Sub Makro1()
'
' Makro1 Makro
'

'
Cells.Find(What:="Benennung", After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Selection.End(xlToLeft).Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
Range("A3").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "KoGr"
Range(Selection, Cells(ActiveCell.Row, 1)).Select
Selection.Font.Bold = True
Rows("1:1").Select
Selection.NumberFormat = "@"
Range("A4").Select
ActiveWindow.FreezePanes = True
Sheets("Tabelle1").Select
Sheets("Tabelle1").Name = "Filter"
ActiveSheet.Buttons.Add(0.75, 15, 58.5, 13.5).Select
Selection.OnAction = "filterKOGR"
Range("A4").Select
ActiveSheet.Shapes("Button 1").Select
Selection.Name = "Start"
Range("B5").Select
ActiveSheet.Shapes("Start").Select
Selection.Characters.Text = "Start"
With Selection.Characters(Start:=1, Length:=5).Font
.Name = "Calibri"
.FontStyle = "Standard"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ThemeColor = 2
.TintAndShade = 0
.ThemeFont = xlThemeFontNone
End With
Range("A4").Select
Sheets("DEML").Select
Range("A112").Select
Sheets("Filter").Select

End Sub

testig04
01.08.2012, 07:05
Hi Josef!

Ich habs inzwischen hinbekommen und funktioniert alles wunderbar!

Ich danke dir noch mal!!

Beste Grüße

Marcel