Clever-Excel-Forum

Normale Version: Initiale letzte Zeile fixieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Wie kann ich den Wert der letzten Zeile des gelben Blocks in einer Makro fixieren, damit diese Information über die ganze Sub erhalten bleibt, und die Makro immer weiß, wo der gelbe Block aufhält. Es ist also die initiale letzte Zeile vor dem Ausführen der Makro die die letzte Zeile durch Hinzufügen von Daten (blauer Block) nach unten verschiebt.

Im Beispielblatt werden zuerst die Daten des gelben Blocks in A, B, C eingetragen, dann wird in D eine Formel eingefügt, bis zur letzten Zeile hinuntergezogen und im nächsten Schritt werden die Formeln durch ihre Werte ersetzt.

In einer zweiten Etappe werden die Daten des blauen Blocks eingefügt und um die selbe Formel für den blauen Block einzugeben muß ich wissen wo er anfängt. Ich kann nicht auf die Werte in B,C und D zurückgreifen, da es sein kann, dass die letzte Zeile des gelben Blocks lediglich das Datum enthält.

In der Makro muß ich "Range("D14").Select" ersetzen durch    "Range("D" & [letzte Zeile des gelben Blocks] + 1).Select" ersetzen, und da blicke ich nicht durch wie das geht, weil die Abgrenzung zwischen gelb und blau nicht mehr zu erkennen ist (außer durch die Farbgebung in der Beispieldatei natürlich, aber die dient lediglich zur Illustration).

Ich hatte mir vorgestellt, am Anfang der Sub die letzte belegte gelbe Zeile als Const zu fixieren, aber entweder geht das nicht, oder ich gebrauche Const nicht richtig. Ich wollte den Wert der hinter Const kommt durch eine Instruktion, die die letzte Zeile definiert ersetzen, aber das scheint nicht möglich zu sein.

Ich hoffe, mich irgendwie verständlich ausgedrückt zu haben.

Mit freundlichen Grüßen
Alooha
Hallo,

schau doch mal hier und versuche, Dich zu erinnern. Wink

Gruß Uwe
Hallo,

vielen Dank für den Hinweis!

Allerdings ist die Sache jetzt eine andere, auch wenn das nicht ersichtlich wird wenn man beide Beispieldateien vergleicht.

Mein Problem hier ist, dass ich keinen Anhaltspunkt sehe, wie ich den Anfang des blauen Blocks bestimmen kann, wenn alle anderen Spalten schon bis unten aufgefüllt sind und ich die Spalte, in die die Formeln eingesetzt werden sollen, nicht nehmen kann, weil die letzte leere Zelle der Spalte D im gelben Block nicht unbedingt die letzte Zeile des gelben Blocks ist, im Fall wo es keinen Wert in dieser Zelle gibt.

Meine Frage, ganz allgemein formuliert: wie kann ich, am Anfang der Aktion der Makro, die Info welche die erste Zeile ist in der sie aktiv werden muß, fixieren, da sie nachher nicht mehr erkennbar ist?

MfG
Alooha
Hallo Alooha,

markiere einfach vor Start des Makros die erste blaue Zeile (oder eine Zelle derer).

Code:
Sub aaa()
  Dim lngZeile As Long
 
  lngZeile = ActiveCell.Row
 
 
End Sub

Gruß Uwe
Hallo,
ich habe inzwischen eine Lösung gefunden, die zu funktionieren scheint.
Entgegen dem was ich zuerst meinte konnte ich mich trotzdem auf die letzte Zelle der Spalte E (ich habe eine Spalte mit Namen hinzugefügt) berufen, um die erste freie Zelle zu ermitteln, da es kein Problem ist wenn die letzte Zelle des vorherigen Blocks leer ist und die Formel "unnötigerweise" eingefüllt wird, da sie in jedem Fall durch ihren Wert ersetzt wird.
MfG
Alooha
Hallo,

Mein nächstes Problemchen: wenn eine Korrektur in einer Zelle der Daten vorgenommen wird soll die entsprechende Formel in E eingesetzt werden, um neu zu berechnen.
Ich habe folgenden Code gefunden, mit dem eine Aktion ausgelöst werden kann. Was fehlt ist die Information, um welche Zelle es sich handelt, die verändert wurde. Wie komme ich an diese Information?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A1:B100")) Is Nothing Then

Range("F1").Select
    ActiveCell.FormulaR1C1 = "MODIF"

End If
End Sub
MfG
Alooha