Du müsstest auch nur das letzte nehmen und nicht beide. Ich hatte in der ersten Variante ja einen anderen Ansatz verfolgt und dann gab's ja noch eine kleine Änderung in Deiner Aufgabenstellung.
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Ach so! Vielen Dank! Das Wort "zusätzlich" hatte mich wohl verwirrt.
Ich verstehe allerdings besser, wie das erste Makro funktioniert.
Ich habe es mal so abgeändert, dass nicht das Datum das Kriterium ist, sondern ob die Zelle A2 leer ist oder nicht (Beilage).
Das scheint zu funktionieren! Wenn die Zelle A2 leer ist, wird (bei Ändern von A1) B2 übernommen, danach bleibt das Resultat. Oder liege ich damit falsch?
Ich habe A3 auf B2 genommen, weil wir das Makro weiterentwickeln müssen, so dass es für die ganze Spalte A gilt.
Zunächst sollte es noch so geändert werden, dass der Trigger nicht A1 ist, sondern das Öffnen des Blattes. Geht das?
Sorry, für all diese Windungen und Danke für Deine Geduld.
mit diesem Makro würde die Spalte B abgearbeitet und wenn in der Nachbarzelle (Spalte A) nix steht, wird der Wert aus B übernommen - Wenn Du A1 änderst..
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'Events deaktivieren
Application.EnableEvents = False
'Wenn die Adresse $A$1 ist, dann
If Target.Address = "$A$1" Then
'Gehe bei Fehler zur Sprungmarke
On Error GoTo errorhandler
'Schleife bis zur letzten gefuellten Zelle in Spalte B
For icnt = 2 To Cells(Cells(Rows.Count, 2).End(xlUp).Row, 2).Row
'Wenn Zelle in Spalte A leer ist, dann uebernehme Wert aus Spalte B
If Cells(icnt, 1).Value = "" Then Cells(icnt, 1).Value = Cells(icnt, 2).Value
'Ende Schleife bis zur letzten gefuellten Zelle in Spalte B
Next
'Wenn die Adresse $A$1 ist, dann
End If
errorhandler:
'Events aktivieren
Application.EnableEvents = True
End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Ich habe die Daten nun in die Spalten verschoben, die dem realen Blatt entsprechen (Beilage).
Zur Erläuterung: Es geht um Preise in verschiedenen Währungen, die in CHF umgerechnet werden sollen. Die Wechselkurse werden extern abgefragt und im Blatt Rates gespeichert.
Die Umrechnung beim Kaufdatum soll nachher nicht mehr verändert werden. Dieses Einfrieren nach dem Ersteintrag klappt perfekt!
Die Spalte L ist nun im Prinzip ein zusätzliche Hilfsspalte, die im realen Blatt ausgeblendet würde. Ich stelle mir vor, dass die Formel der Spalte in das Makro übernommen werden könnte, so dass die Hilfsspalte nicht nötig wäre. Liege ich richtig?
Ich sehe zudem, dass die Berechnung bei jeder Änderung irgendeiner Zelle ausgelöst wird. Ideal wäre, wenn sie nur bei einer Änderung in Spalte I ausgelöst würde (falls die Zeit für die Berechnung bei einem sehr großen Blatt ins Gewicht fällt).
wenn die Zufallszahl später wieder weg kommt, musst Du eigentlich nix ändern. Ansonsten musst Du etwas Code dazwischen schieben, was die Spalte I betrifft. Das kommt nach den ...Events=False bis zu dem Teil mit $A$1
Ich hab da jetzt nur die Änderung von M2 programmiert. In der Zelle ist dann die Formel weg und es steht nur das Ergebnis. Du brauchst diese Zeile dann nur kopieren und 2x einfügen für N2 und O2 und das dann entsprechend den Zelladressen ändern.
Bekommst Du hin, oder?
Code:
Application.EnableEvents = False
'Wenn die Spalte = I (9) ist, dann
If Target.Column = 9 Then
Range("M2") = Sheets("Rates").Range("C3") + Rnd
'Ende Wenn die Spalte = I (9) ist, dann
End If
'Wenn die Adresse $A$1 ist, dann
If Target.Address = "$A$1" Then
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)