Kann man die oberste Zeile unterhalb einer Fixierung "ansprechen"
#1
Hallo und Hola Wink

dämlicher Betreff, ich weiß, aber ist es möglich, die jeweils oberste Zeile unter einer feststehenden Überschrift (also ggf. auch beim setzen eines Filters) "anzusprechen"? Also quasi mit dem Filterkriterium als Bedingung für eine bedingte Formatierung zu arbeiten.

Voraussetzung: die ersten 14 Zeilen sind fixiert bzw. eingefroren, ich würde nun gern mit einer bestimmten Zelle arbeiten und vom Inhalt derselben eine bedingte Formatierung in anderen Zellen abhängig machen. Wenn kein Filter gesetzt ist, ist das V15, aber wenn ein Filter gesetzt wird, steht dort ja eine andere Zelle...

Geht das so einfach?

Besten Dank für einen Vorschlag und eine gute kurze Restwoche
Klaus
Top
#2
hi Klaus

Dieser Code sagt die Zeilennummer unterhalb der Fixierung.
Code:
Option Explicit
Sub ErsteFixierteZeile()
    Dim Zeile As Integer
        If ActiveWindow.Split = 0 Then GoTo MELD
            Zeile = ActiveWindow.SplitRow + 1
                MsgBox Zeile
        Exit Sub
MELD:
    MsgBox "Keine Fixierung"
End Sub
Mfg Guschti
Der Künstler lebt auch vom Applaus
Excel Optimaler Zuschnitt von Stangen/Balken - YouTube
Top
#3
Hallo Guschti,
schon mal besten Dank dafür!!!
Wie gehe ich denn jetzt damit um bzw. wo muß ich eine Option einbauen.
Damit kenne ich mich leider nicht aus.
Vielen Dank vorab und Grüße
Klaus
Top
#4
hi Klaus

Zitat:Wie gehe ich denn jetzt damit um bzw. wo muß ich eine Option einbauen.

Damit kenne ich mich leider nicht aus.
Dieser Code zeigt dir lediglich, die 1. Zeilennummer unter der Fixierung.
Wenn du von VBA noch Null Ahnung hast, wird das schwierig, weil du das Ende deines Projektes noch nicht voraus siehst. 
Arbeitsmappen mit VBA-Inhalt werden dann auch als xslm oder xslb gespeichert. Die Sicherheit mit VBA-Code muss auch aktiviert sein.

Bedingte Formate macht man eigentlich immer bevor du filterst.

Mfg Guschti
Der Künstler lebt auch vom Applaus
Excel Optimaler Zuschnitt von Stangen/Balken - YouTube
Top
#5
Hallo Guschti,

klingt niederschmetternd Wink
Heißt das, ich kann die Zeilennummer irgendwo "parken"? Könnte man von da aus mit einem SVERWEIS weiterarbeiten?
Danke für Deine Geduld.
VG
Klaus
Top
#6
Wenn ich da mal mitmischen darf...
Die Frage war ja nicht explizit nach der ersten Zeile, die nach der Fixierung kommt, die weiß der TE nämlich schon:

Zitat:...die ersten 14 Zeilen sind fixiert bzw. eingefroren...

und

Zitat:Wenn kein Filter gesetzt ist, ist das V15, aber wenn ein Filter gesetzt wird, steht dort ja eine andere Zelle...

So wie ich es verstehe, ist die erste Zeile unterhalb der fixierten Zeile gefragt, die bei gesetztem Autofilter auftritt. Und die ist ja variabel und kann zB so ermittelt werden:

Code:
Option Explicit

Public Sub ersteZeile()
Dim lngRow As Long
   For lngRow = 15 To Cells(15, 1).End(xlDown).Row
       If Not Rows(lngRow).Hidden Then Exit For
   Next
MsgBox "Erste Zeile: " & CStr(lngRow)
End Sub

@Klaus:
Diesen Code baust du wie folgt ein:

- Klicke mit der rechten Maustaste auf den Tabellenblattnamen am unteren Rand und wähle "Code anzeigen"
- Es öffnet sich der VBA-Editor, dorthin kopierst du den gesamten Code
- Du kannst das sofort ausprobieren, indem du den Cursor an eine beliebige Stelle innerhalb des Codes stellst und F5 drückst (vorher halt mal den Filter setzen für ein Erfolgserlebnis)

Nun ist halt die Frage, was weiter mit dem Zeilenwert geschehen soll. Aktuell kriegst du ja nur ein Meldungsfenster mit der Zeilennummer, sonst passiert nichts weiter.
Falls der Wert in eine Zelle geschrieben werden soll, dann ersetze die Zeile

Code:
MsgBox "Erste Zeile: " & CStr(lngRow)

durch

Code:
Sheets("DeinBlattname").Range("A1").Value = CStr(lngRow)

Ersetze dabei "DeinBlattname" durch den Namen des Tabellenblatts, in das der Wert geschrieben werden soll und "A1" durch die gewünschte Zelle.
Schöne Grüße
Berni
Top
#7
Hallo Klaus
Da gibt es auch eine Formellösung:
Den ersten (wegen Spaltenüberschrift in Zeile 1: Beginn in Zeile 2):

{=INDEX(B:B;MIN(WENN(TEILERGEBNIS(3;INDIREKT("B"&ZEILE(2:100)));ZEILE(2:100))))}
aus:
http://www.herber.de/excelformeln und bitte suchen .../formeln.html?welcher=366'
Top
#8
Superausführliche Antworten - vielen Dank!!! Blush
Mache mich gleich mal ans ausprobieren!
Euch allen ein schönes langes Wochenende :19:
VG
Klaus
Top
#9
So, ich habe den Code eingebaut und getestet, Berni.
Er funktioniert, im Hinblick auf die Zeilenreihe, zunächst sehr gut.

Allerdings nur "einmalig". Ich habe einen Test gemacht und das erste ausgewählte Kriterium X stand in Zeile 16, Ausgabe in der betreffenden Zelle (bei mir gerade BO4) gleich folgerichtig 16.

Nachdem ich den Filter aber wieder aufgelöst und neu gefiltert habe (das dann aktuelle Kriterium Y war dann in Zeile 18 zu finden) stand in der betreffenden Zelle BO4 aber immer noch die 16.

Habe ich da einen Bedienungsfehler gemacht, muß ich da noch was beachten?

Sleepy Gibt es zusätzlich die Möglichkeit, mit dem Filterkriterium "an sich" zu arbeiten? Also dass wenn das Filterkriterium bspw. "Müller" heißt, dieses anstelle der Zeilennummer auszugeben und damit dann bedingte Formatierungen in anderen Zellen zu steuern? (Also wenn die oberste Zeile = "Müller", DANN...)

Besten Dank nochmal für Deinen/Euren guten Rat.
VG
Klaus
Top
#10
Nachtrag - ich muß mich korrigieren:

Die Angabe der Zeilennr. in Zelle BO4 funktionierte nur, nachdem ich mit F5 im Code selber getestet habe.
Wenn ich in der Tabelle selbst einen Filter setze passiert leider gar nichts.

Hmmm, was hab ich falsch gemacht?

Viele Grüße
Klaus
Top


Gehe zu:


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