![]() |
||
![]() |
Zelleninhalte wechselseitig umrechnenIn 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 hCHIP-Code: UMRECH Private Sub WorkSheet_Select tionChange(ByVal Target As t Excel.Range) Umrechnen End Sub Static Sub Umrechnen() Dim X, Y, Z Z = ActiveWorkbook.Worksheets(t äTabelle1ô).Cells(1, 1) If X <> Z Then X = Z Y = 3.14 * X ActiveWorkbook.Worksheets(t äTabelle1ô).Cells(1, 2) = Y Else Z = ActiveWorkbook.Workt sheets( äTabelle1ô).Cells(1, 2) If Y <> Z Then Y = Z X = Y / 3.14 ActiveWorkbook.Worksheetst (ä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. |
![]() |