Moin allerseits,
um das Stichwort
Globale Variablen noch einmal aufzunehmen.
Sie können unzuverlässig sein, weil vielleicht unkontrollierbar an jeder beliebigen Stelle des Codes manipulierbar. Stimmt. Allerdings können sie den Code auch -trotzdem übersichtlich- deutlich vereinfachen. Mal so als Gedankenspiel:
Ich habe eine Mappe mit x Tabellen in einem bestimmten, flexiblen Verzeichnis: Dazu hier ein Array, das immer wieder abgefragt wird. Also deklariere ich im Modul
modSystem:
Code:
Option Explicit
Public wb As Workbook, wsE As Worksheet, wsV As Worksheet, wsA As Worksheet, sPath As String
Public aArr
Der Pfad und die Tabellen werden sich zur Laufzeit nicht verändern. Und falls da doch Änderungen/Ergänzungen notwendig werden, deklariere ich gezielt nach. Der geübte Profi wird in den Namen der Worksheets das
EVA-Prinzip erkennen.
Dann kommt sie
Sub System(), die bereits beim
WorkBook_Open aufgerufen werden muss, und ein kleiner Test:
Code:
Sub System()
Set wb = ThisWorkbook
Set wsE = wb.Sheets("Tabelle1")
Set wsV = wb.Sheets("Tabelle2")
Set wsA = wb.Sheets("Tabelle3")
sPath = wb.Path
aArr = Array("Wert 0", "Wert 1", "blöder Wert")
End Sub
Sub KleinerTest()
MsgBox _
"Pfad: " & sPath & vbNewLine & _
"wsE: " & wsE.Name & vbNewLine & _
"aArr: " & aArr(2) & vbNewLine _
, , "Kleiner Test"
End Sub
Beim Testen einzelner Prozeduren wird man immer wieder über
Laufzeitfehler 91 stolpern. Einfache Lösung: Während der Programmierung/den Tests die
System einfach in jeder Sub als erstes aufrufen. Danach genügt der einmalige Aufruf über
WorkBook_Open (System als ganzes Wort aus dem kompletten Projekt ersatzlos ersetzen), um nicht jedes Mal wieder bei Null anzufangen. Zum Testen: den Call System in
KleinerTest() einbauen und schon klappt's auch nach einem VBA- Reset mit den Nachbarn...
Übersichtlicher? Ja, denn das ganze Zeugs, das so wieso in jeder Sub braucht, muss jetzt nicht mehr in jedem Header einer Sub stehen und bei jedem Tippfehler korrigiert zu werden.
Wie gesagt: als Gedankenspiel - aber in vielen meiner Proj ... Verzeihung
Basteleien erfolgreich im Einsatz.
Schönen Abend noch!