Office Script: Vorsicht bei getActiveWorksheet()

In diesem Beitrag zeige ich, wie man mit workbook.getActiveWorksheet() in Office Script das aktuelle Tabellenblatt ansprechen kann und warum man mit dieser Methode vorsichtig sein sollte.

EXCELOFFICE SCRIPT

9/19/20251 min read

Office Script: Vorsicht bei getActiveWorksheet()

Heute habe ich mir workbook.getActiveWorksheet() angesehen. Mit dieser Methode hole ich mir das aktuell aktive Tabellenblatt. Klingt zunächst praktisch, vor allem für mich als VBA-Nutzer. Aber: Hier steckt eine wichtige Falle.

Mein Aha-Moment

In VBA war das aktive Tabellenblatt immer eindeutig bekannt. Ich konnte mich darauf verlassen, dass ActiveSheet den richtigen Bezug hatte.

In Office Script ist das anders:

  • getActiveWorksheet() gibt mir nur das Blatt zurück, das in diesem Moment aktiv ist.

  • Wechsle ich im Code das Blatt (z. B. mit .activate()), dann weiß Office Script nicht automatisch, dass sich mein Bezug geändert hat.

  • Meine Variable activeSheet zeigt immer noch auf das alte Blatt, es sei denn, ich weise sie neu zu.

Erklärung

Ein typischer Versuch wäre:

let activeSheet = workbook.getActiveWorksheet()
let tabelle2 = workbook.getWorksheet("Tabelle2")
tabelle2.activate()
activeSheet …

Das Problem: activeSheet bleibt auf dem alten Blatt stehen. Um mit „Tabelle2“ weiterzuarbeiten, müsste ich activeSheet erneut aktualisieren:

activeSheet = workbook.getActiveWorksheet()

Wenn ich das jedes Mal machen muss, dann kann ich auch gleich direkt mit tabelle2 arbeiten.

Mein Fazit

getActiveWorksheet() klingt zunächst wie das VBA-ActiveSheet, ist es aber nicht. In Office Script muss ich die Variable nach jedem Blattwechsel neu befüllen. Vergesse ich das, arbeite ich im falschen Tabellenblatt.

Für sauberen Code ist es daher meist besser, direkt mit den Tabellennamen-Variablen zu arbeiten (let tabelle2 = workbook.getWorksheet("Tabelle2")). So weiß ich genau, welches Blatt gemeint ist, ohne Risiko, dass mein „activeSheet“ veraltet ist.

Weitere interessante Beiträge:

Wie man ein Tabellenblatt aktivieren kann.

Wie deklariert man Variablen?

Office Script wie am besten Tabellenblätter ansprechen
Office Script wie am besten Tabellenblätter ansprechen