Jawoll! Bewerft den Bastard mit Dreck und Erde! – Oma, bitte! Wir sind hier auf einer Beerdigung!

Amüsiert.

VBA-Schulung. Ich lasse während der Schulung kleine „Lösungen“ programmieren. Ich schaue den Teilnehmern und Teilnehmerinnen über die Schulter. Bei einem der Teilnehmer finde ich die Codezeilen:

    i = 3
    MsgBox ActiveCell(i)

Die ActiveCell ist B1, ActiveCell(3) liefert den Inhalt der Zelle B3, hier: „Peking“:

Das heißt: ActiveCell(1) meint die Zelle selbst, ebenso wie ActiveCell(1, 1). Dies ist also keine Kurzschreibweise für ActiveCell.Offset(1, 1), denn damit wäre C2 gemeint. Auch nicht für Cells(1, 1) – das wäre A1.

Diese Schreibweise gehört dann zur Kategorie ActiveCell.Range(„A1“), womit B1, also die aktive Zelle gemeint ist (A1 ist hier ein relativer Bezug).

Ich würde schreiben:

Cells(3, 2)

oder

Range(„B1“).Offset(2, 0)

wenn ich B3 meine.

Und: die Eigenschaft „Value“ nicht vergessen!

Und: noch angeben, auf welchen Tabellenblatt die Zelle liegt.

Es geht aber auch anders. Wer denn möchte …