Makro beim Wechsel der aktiven Zelle ausführen

Eine für Excel 5.0 geschriebene Funktion zeigte mir wunschgemäß den Inhalt einer weiter unten befindlichen Zelle im Feld »A1« an, wenn ich mit dem Cursor die Spalte wechselte. Die Übersetzung in Excel 2000 funktioniert zwar prinzipiell, jedoch stets nur einmal beim Öffnen der Excel-Tabelle. Wie erreiche ich auch unter Excel 2000 die gewünschte Aktualisierung der Daten im Feld »A1« beim Wechsel der Cursorposition innerhalb der Tabelle?

Excel 2000 führt genau wie Excel 97 keine Neuberechnung Ihrer selbst geschriebenen Funktion durch, wenn Sie mit dem Cursor die Spalte im Tabellenblatt wechseln. Sie müssen Excel dazu zwingen, beim Wechsel der aktiven Zelle ein Makro auszuführen, das die gewünschten Zellinhalte neu berechnet und bereitstellt.

Zu diesem Zweck richten Sie eine Ereignis-Prozedur ein, die auf das Ereignis »Selectionchange« im Arbeitsblatt reagiert. Führen Sie »Extras | Makro | Visual Basic-Editor« aus. Falls das Fenster »Projekt | VBAProjekt« nicht sichtbar ist, holen Sie es über »Ansicht | Projekt-Explorer« auf den Schirm. Dort öffnen Sie mit einem Doppelklick auf Ihre Tabelle das Fenster mit dem Programmcode und fügen Zeilen ein:



Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
DivAnzeig
End Sub



Beenden Sie mit »Datei | Schließen und zurück zu Microsoft Excel«. Nun ruft Excel bei jedem Wechsel der aktiven Zelle das Makro »DivAnzeig« auf.
Jetzt sollten Sie noch aus Ihrer Funktion »DivAnzeig« eine Prozedur machen, die die Daten direkt in das Feld A1 schreibt. Führen Sie »Extras | Makro | Makros« aus und wählen Sie als »Makroname« die Funktion. Klicken Sie auf die Schaltfläche »Bearbeiten«. Ersetzen Sie im jetzt geöffneten Fenster des VBA-Editors das Makro »DivAnzeig« durch folgende Zeilen:



Sub DivAnzeig()
Worksheets(1).Activate
Y=ActiveCell.Column
Cells(1,1).Value=Cells(Y+9,7).Value
End Sub



Beenden Sie den VBA-Editor wieder. Jetzt führt Excel bei jeder Änderung der aktiven Zelle in »Tabelle1« oben stehendes Makro aus.