Per VBA eine Excel-Formel ändern

Hallo zusammen,

benötige Hilfe bei folgendem Problem:
Ich habe ein Tabellenblatt (Tabelle2) bei dem sich verschiedene chronologische Daten (= Mehrzahl von Datum) befinden. Bisher sucht mein Makro das letzte Datum in Spalte A, welches in Spalte B einen Wert ungleich 0 hat.
Nun ist es wichtig, die Zeile zu wissen.
Diese muss in den Zellenformeln des Tabellenblattes Tabelle1 verwendet werden.
Wurde nun das letzte Datum mit einem Wert ungleich 0 in Zelle 21 gefunden, so soll die Formel eines bestimmten Bereiches des Tabellenblattes Tabelle1 in „=Tabelle2!$A$21“ (da 21 die neue gefundene Zelle ist) statt zuvor „=Tabelle2!$A$20“ umgewandelt werden.
Dies soll ausdrücklich mit einem Makro erfolgen.

Ich hoffe meine Darstellung ist verständlich.

Hallo,
folgender Codeschnipsel setzt den Verweis:
Zielzelle.FormulaR1C1 = „=Tabelle2!R“ & Range(letzteZelle).Row & „C“ & Range(letzteZelle).Column

wobei
Zielzelle die Zelle ist, die den Verweis beinhalten (als Excel.Range-Objektvariable oder hardcodiert als Range("adresse)
letzteZelle die Zelle ist, deren Adresse eingefügt werden soll

Den restlichen Code gibt’s ja, wenn ich dich richtig verstanden habe, bereits.

Viel Erfolg
Katharina

(PS: nur der Vollständigkeit halber: wie konntest du mich als Experten auswählen? Ich hab mir nämlich einen Urlaub eingerichtet … )

Hallo,
funktioniert leider noch nicht ganz.
„=Tabelle2!$A$20“ soll in „=Tabelle2!$A$21“ umgewandelt werden UND
„=Tabelle2!$B$20“ soll in „=Tabelle2!$B$21“
umgewandelt werden.
Es müssen also nur die Zeilennummern geändert werden.

Über eine weitere Hilfe wäre ich auch diesmal sehr dankbar.

zum PS: Kann ich leider nicht beantworten, habe keine Meldung oder ähnliches gesehen.

Hallo,
folgender Codeschnipsel setzt den Verweis:
Zielzelle.FormulaR1C1 = „=Tabelle2!R“ & Range(letzteZelle).Row
& „C“ & Range(letzteZelle).Column

wobei
Zielzelle die Zelle ist, die den Verweis beinhalten (als
Excel.Range-Objektvariable oder hardcodiert als Range("
adresse)
letzteZelle die Zelle ist, deren Adresse eingefügt werden soll

Den restlichen Code gibt’s ja, wenn ich dich richtig
verstanden habe, bereits.

Viel Erfolg
Katharina

(PS: nur der Vollständigkeit halber: wie konntest du mich als
Experten auswählen? Ich hab mir nämlich einen Urlaub
eingerichtet … )

Zielzelle1.FormulaR1C1 = „=Tabelle2!R“ & Range(letzteZelle).Row
& „C1“
macht das für die Spalte A, und
Zielzelle2.FormulaR1C1 = „=Tabelle2!R“ & Range(letzteZelle).Row
& „C2“
macht das für die Spalte B

Was du sonst noch an Code hast, kann ich ja leider nur raten :wink:

Viel Erfolg
Katharina

Nein, die Darstellung ist nicht verständlich:
was hast Du schon, was fehlt?
Normalerweise solltest Du Code einstellen, den man dann kommentieren kann.

Hast Du die Nr. der letzten Zeile ermittelt?

Ist die letzte Zeile des Datum gemeint oder das chronologisch letzte Datum?

Weißt Du wie man das chronologisch letzte Datum ermittelt?

Und und und…

Hier die Kurzform, hoffe den Rest hast Du.

My\_Last\_row = 21 'die Letzte Reihe musst du natürlich irgenwie ermitteln.
' z.B. My\_Last\_row = ActiveCell.Row
ActiveSheet.Range(Cells(2, 1), Cells(3, 2)).Formula = "=Tabelle2!$A$" & My\_Last\_row

Danke, klappt so wunderbar!

Vielen vielen Dank Katharina!

…habs bereits hinbekommen, dank Wichtighexe,
trotzdem danke!

Hallo, bin kein VBA-Spezialist, kann daher leider nicht helfen. Good luck,Schi

ANFRAGE KANN GESCHLOSSEN WERDEN

Hallo, bin kein VBA-Spezialist, kann daher leider nicht
helfen. Good luck,Schi

Hallo,

folgendes Makro könnte dein Problem lösen:

Sub Problemloesung()
Application.ScreenUpdating = False 'macht das Makro schneller
Worksheets(„Tabelle2“).Activate
x = False
For zeile = 2 To 65536 'zeilenbereich des Datums
If IsDate(Cells(zeile, 1)) And Cells(zeile, 2) > 0 Then x = True: Exit For 'wenn in Ax ein Datum ist und Bx>0 dann schleife beenden
Next
If x Then
Worksheets(„Tabelle1“).Cells(1, 1) = „=Tabelle2!$A$“ & zeile 'in „Tabelle 1“ Zelle „A1“
Else
'nix gefunden
End If
Application.ScreenUpdating = True 'wichtig! nach false muss true erscheien
End Sub

Falls eine andere/weitere Lösung erwünscht ist. bitte melden.

Andreas