PDA

Vollständige Version anzeigen : Welche Zeile ist die letzte auf der Seite?


Turbo
03.07.2001, 16:36
Hallo, ich möchte durch ein Makro ermitteln welches die letzte Zeile auf der Seite der Tabelle ist um diese Zeile zu formatieren.
(Kopf/Fußzeiele geht nicht)

Danke

Pepi
03.07.2001, 19:19
Wie? Was? Betrifft das den Ausdruck oder geht es dir nur um die letzte Zelle, in der etwas steht? Wie sind die Daten in der Tabelle aufgeteilt? In welchen Spalten oder auch Zeilen befinden sich Informationen??

Gib uns mehr - mehr Info!
Gruß, Matthias

Klaus-Dieter
03.07.2001, 21:35
Hallo Turbo,

hier ist das Makro:

Sub Letzte_Zelle()
' ermittelt die letzte Zelle in Spalte A
' Wert z liefert die Zeilennummer
z = 1
Do While Cells(z, 1) <> ""
z = z + 1
Loop
End Sub

Pepi
04.07.2001, 05:24
Hi,
Klaus-Dieters Makro kann - wenn es dein Begehr ist, in der aktuellen, durchgehend mit Werten gefüllten Spalte zu arbeiten - verkürzt werden:
Hier soll z.B. der Hitnergrund der letzten Zelle grau werden.
Range("A2").End(xlDown).Interior.Interior.ColorIndex = 15

Von der Ausgangszelle wird mit Ende-Cursor runter nach unten geschaut und die dortige Zelle direkt angesprochen.

HTH, Matthias

Turbo
04.07.2001, 11:57
Hallo,
ich habe mich anscheinend nicht ganz klar ausgedrückt.
Die Tabelle besteht aus einer Vorlage. Die Vorlage hat Formatierungen bis Zeile 200.
Nun möchte ich eine Formatierung durchführen in der letzten Zeile vor dem Seitenumbruch.
Dabei ist die Anzahl der benutzten Zeilen variabel und die Zeilenhöhe(Zeilenumbruch erlaubt).

Danke Turbo

thomasaandeerson
11.04.2005, 15:00
Hallo, ich möchte durch ein Makro ermitteln welches die letzte Zeile auf der Seite der Tabelle ist um diese Zeile zu formatieren.
(Kopf/Fußzeiele geht nicht)

Danke


Ja, ich weiß, daß ich soooo spät mit meiner Antwort dran bin... :boah:
...aber vielleicht hilft meine Tüftelei anderen bei ähnlichen Problemen weiter.

Ich hab' mich vor kurzem mit dem Problem herumgeschlagen, wie ich in einer
Spalte die Zelle mit dem letzten Wert herausfinden lasse (=die Zelle, nach der nur noch leere Zellen kommen). Meine VBA-Ergebnisse sehen so aus:


***erste Idee***
Private Sub Letzte_Zelle1()

' gibt _nur_bei_zusammenhängenden_Werten_ diejenige Zeile an,
' in die der letzte Werte der jeweiligen Gruppe von Werten steht

' gibt den Startwert vor (wird später als Zeilenzahl verstanden)
z = 1

' durchläuft die dritte Spalte von "Tabelle1" von oben
' nach unten, bis eine leere Zelle gefunden wird
Do While Worksheets("Tabelle1").Cells(z, 3) <> ""

'erhöht Wert jeweils um eins (im Rahmen von "Loop")
z = z + 1

Loop

' gibt die gesuchte Zeile aus
MsgBox z - 1

End Sub
******


Die erste Idee kommt dem Leser bekannt vor, sie ist dieser Diskussionsrunde
entnommen. Dazugekommen ist eigentlich nur die Sache mit "MsgBox" am
Ende.
Wie im Kommentar angemerkt, hilft diese Idee nur, wenn es zwischen den Werten einer Spalte *keine* Leerzellen gibt - soll heißen: Wenn in C1, C2 und C4 etwas drinsteht, aber in C3 nicht, dann fällt C4 hierbei unter den Tisch.


***zweite Idee***
Private Sub Letzte_Zelle2()

' gibt diejenige Zeile an, in die der
' allerletzte Wert einer Spalte steht
' man beachte: "Row" (bei der Berechnung von "s")

' gibt die Anzahl aller in der
' C-Spalte vorhandenen Zeilen an
r = Range("C:C").Rows.Count

' gibt diejenige größte Zeile in der
' C-Spalte an, die einen Wert enthält
s = Range("C:C").Cells(r, 1).End(xlUp).Row

' gibt die gesuchte Zeile aus
MsgBox s

End Sub
******


Die zweite Idee geht einen Schritt weiter: Hier wird die letzte gefüllte Zelle
einer Spalte angezeigt (hier in der C-Spalte), egal ob es mittendrin ein paar Leerzellen gibt oder nicht.
Bei dem obigen Beispiel (C1 gefüllt, C2 gefüllt, C3 leer, C4 gefüllt) sollte C4 als letzte Zelle erkannt werden.


***dritte Idee***
Private Sub Letzte_Zelle3()

' gibt den Inhalt derjenigen Zelle an, in die
' der allerletzte Wert einer Spalte steht
' man beachte: "Rows" (bei der Berechnung von "s")

' gibt die Anzahl aller in der
' C-Spalte vorhandenen Zeilen an
r = Range("C:C").Rows.Count

' gibt den Inhalt der Zelle in derjenigen größten
' Zeile in der C-Spalte an, die einen Wert enthält
s = Range("C:C").Cells(r, 1).End(xlUp).Rows

' gibt den Inhalt der Zelle aus
MsgBox s

End Sub
******


Die dritte Idee ist ähnlich wie die zweite Idee, allerdings wird hier nicht die
Zeilennummer, sondern der Zelleninhalt der letzten gefüllten Zelle einer Spalte angegeben.

Lumpensammler
11.04.2005, 15:56
Hallo, Thomas,

die Antwort ist so grundlegend, daß sich dies sogar im Bereich Excel - VBA grundlegende Befehle (http://www.ms-office-wissen.de/askdrmof/liste.php?cat=Excel&cat_unter=VBA%20grundlegende%20Befehle) bei Ask Dr.MOF niedergeschlagen hat ;)

Gruß
LS

thomasaandeerson
13.04.2005, 01:20
Hallo, Thomas,

die Antwort ist so grundlegend, daß sich dies sogar im Bereich Excel - VBA grundlegende Befehle (http://www.ms-office-wissen.de/askdrmof/liste.php?cat=Excel&cat_unter=VBA%20grundlegende%20Befehle) bei Ask Dr.MOF niedergeschlagen hat ;)

Gruß
LS

Huch...da kommt mir tatsächlich einiges bekannt vor...hmpf...und ich hab' doch tatsächlich meine Ideen selber erarbeitet und Hirnschmalz darauf verwendet, obwohl die gute Lösung schon existierte. :-)