Service: Excel-VBA: Mit klar definierten Elementen arbeiten

Immer wieder findet sich VBA-Code, bei dem mit dem zufällig(!) aktiven Excel-Objekt gearbeitet wird:

    ...
    ActiveCell = "blah-blah"
    ...
    ActiveSheet.Name = "Wichtige Auswertung"
    ...

Der Code sieht harmlos aus ist aber sehr fehleranfällig wenn er irgendwo in einer langen Kette von Anweisungen steht!

Grund: man kann nicht sicher sein, ob das was man für das aktive Objekt hält auch jederzeit das aktuelle oder aktive Element ist.

Deswegen: am besten von Anfang an immer sicherstellen, dass man mit dem Element arbeitet, mit dem man arbeiten möchte. Das ist ganz einfach, wie dieses Beispiel zeigt.

Public Sub Demo()

    ' Referenz auf das aktive Arbeitsblatt
    Dim wsh As Worksheet
    Set wsh = ActiveSheet ' <-- das ist entscheidend!

    ' ... irgend welcher anderer Code ...

    ' 'Hallo Welt' in die Zelle ganz oben links schreiben
    wsh.Cells(1, 1) = "Hallo Welt" ' <-- 100 % sicher: ursprüngliches ActiveSheet!

    ' Den gerade eben geschriebenen Inhalt aus der Zelle zurücklesen
    Dim strCellContent As String
    strCellContent = wsh.Cells(1, 1)

    ' und in die einzelnen Wörter zerlegen
    Dim varCellcContent As Variant
    varCellcContent = Split(strCellContent, " ")

    ' und wieder (in irgend welche anderen Zellen) ausgeben
    wsh.Range("$B$2") = varCellcContent(0)
    wsh.Cells(3, 3) = varCellcContent(1)

End Sub

Im Beispiel oben ist jederzeit klar, mit welchem Arbeitsblatt man es zu tun hat, weil sofort (und nur) in der allerersten Code-Zeile auf ActiveSheet zugegriffen wird. Selbst wenn während der Verarbeitung ein anderes Arbeitsblatt aktiviert wird, die Variable wsh zeigt immer auf das ursprünglich aktive Arbeitsblatt.


Ergebnis: vollständig vordefinierte Routine mit Fehlerbehandlung Interessant für Sie:

VBA-Extentions-Tools

Produktivität in VBA steigern
Routinearbeiten in VBA vereinfachen



Seitenanfang

Kontaktaufnahme- und Terminvereinbarung:

Bei Fragen und für Terminvereinbarungen erreichen Sie uns unter:

0 63 49 99 07 38

0 151 51 95 34 00

Oder nutzen Sie das Kontaktformular




Ihr Ansprechpartner:


Hier sollte das Fahnungsfoto zu sehen sein.

Ralf Kunsmann

Spezialist für VBA-Programmierung
(alle Office-Anwendungen)
Entwickler der
VBA-Extension-Tools