Zelleninhalte wechselseitig umrechnen

In einer Zelle habe ich einen Wert mit einer Einheit eingegeben. In einer zweiten Zelle rechne ich diesen Wert in eine andere Einheit um. Nun möchte ich auch in der zweiten Zelle Werte eingeben, so dass Excel dann in der ersten Zelle wieder den umgerechneten Wert ermittelt. Bei der Eingabe der Funktionen bemängelt Excel jedoch einen Zirkelbezug. Was tun?

Ihr Problem lässt sich nur durch ein Makro lösen. Um es anzulegen, führen Sie den Befehl »Extra | Makro | Makros« aus, geben einen Namen für das Makro ein und drücken auf »Erstellen«. Im VBA-Editor klicken Sie im Fenster des »Projekt-Explorers« mit der rechten Maustaste auf den Eintrag für das Tabellenblatt mit der Umrechnung. Aus dem Kontextmenü wählen Sie »Code anzeigen«. Jetzt geben Sie im Codefenster der Tabelle folgende Makrozeilen ein oder holen sich diese aus dem Beispiel-Sheet auf der Heft-CD CHIP-Code: UMRECH



Private Sub WorkSheet_SelectionChange(ByVal Target As Excel.Range)
Umrechnen
End Sub
Static Sub Umrechnen()
Dim X, Y, Z
Z = ActiveWorkbook.Worksheets(äTabelle1ô).Cells(1, 1)
If X <> Z Then
X = Z
Y = 3.14 * X
ActiveWorkbook.Worksheets(äTabelle1ô).Cells(1, 2) = Y
Else
Z = ActiveWorkbook.Worksheets(äTabelle1ô).Cells(1, 2)
If Y <> Z Then
Y = Z
X = Y / 3.14
ActiveWorkbook.Worksheets(äTabelle1ô).Cells(1, 1) = X
End If
End If
End Sub



Und so funktioniert das Makro: Nach der Eingabe eines Wertes wechselt die aktive Zelle auf dem Tabellenblatt. Deshalb startet das Programm beim Ereignis »SelectionChange«. Dann vergleicht es den Zelleninhalt mit den zuvor enthaltenen Werten. Durch die Deklaration der Prozedur mit »Static Sub« speichert VBA die lokalen Variablen zwischen verschiedenen Aufrufen. Im Makro enthalten also die Variablen »X« und »Y« die alten Zellwerte. Nun liest das Makro den aktuellen Wert der ersten Zelle in »Z« ein und vergleicht mit dem alten Inhalt. Hat sich der Wert geändert, speichert das Makro den neuen Wert in »X«, berechnet den Wert von »Y« neu und schreibt ihn in die zweite Zelle.

Genauso funktioniert es andersherum. Sie müssen nur die verwendeten Zellen und die Umrechnungen zwischen »X« und »Y« anpassen.