Clever-Excel-Forum

Normale Version: Formel ignorieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2 3
Besten Dank für die interessanten Erklärungen und den Link.

VBA kann ich leider nicht vertieft lernen, dazu fehlt mir die Zeit, auch brauche ich VBA viel zu wenig oft.

Ich kapituliere. Habe es mir zu einfach vorgestellt, mein Fehler, sorry.

Danke jedenfalls Schauan für die Mühe und die Geduld.

Gruss
Peter Pan
Hallo Peter,

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.
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.

Peter
Ich korrigiere: der Trigger kann so bleiben (A1).
Hallöchen,

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
Fabelhaft! Herzlichen Dank!

Werde versuchen, das in das reale Blatt einzubauen. Werde vermutlich noch Fragen haben. Blush


Beste Grüsse
Peter Pan
Hallo Schauan

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).

Mit herzlichem Dank
Peter
Hallo Peter,

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
Hallo Schauan

Vielen Dank. Da haben wir uns wohl nicht ganz richtig verstanden.

Die Idee war, dass das Makro ausgelöst wird, sobald in Spalte I etwas neu eingetragen wird (Beilage, hier I8).

Sowie dass im Makro die Formel, die in der Hilfsspalte L stand, übernommen wird:


Code:
If Cells(icnt, 11).Value = "" Then Cells(icnt, 11).Value

=WENN(ISTZAHL(I8);WENN(B8="EUR";I8*EUR;WENN(B8="USD";I8*USD;WENN(B8="GBP";I8*GBP;I8)));"")

Ich habe das versucht, bin aber nicht klargekommen damit.

Beste Grüsse
Peter
Seiten: 1 2 3