Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Gibt es Variable für alle Module?

Gibt es Variable für alle Module?
20.05.2018 09:10:44
Barbaraa
Hallo
kann man Variable für alle Makros in einem Worksheet zugänglich machen?
Beispiel:
In der ersten Zeile stehen irgendwo Zellen mit "Haus", "Baum" und "Garten" als Inhalt herum. Die Spaltennummer dieser Zelle wird in verschiedenen Makros in verschiedenen Modulen gebraucht. Die bestimme ich mit
Sp1 = Worksheets(1).Rows(1).Find("Haus").Column
Sp2 = Worksheets(1).Rows(1).Find("Baum").Column
Sp3 = Worksheets(1).Rows(1).Find("Garten").Column
(und weitere 10 solche Variable)
Jedes Makro, das diese Werte braucht, beginnt mit diesem Suchblock. Manche dieser Makros werden von anderen Makros mehrfach aufgerufen und sind über mehrere Module verteilt.
Nun überlege ich, das irgendwie zu vereinfachen, da ja das Ergebnis immer gleich ist.
Vielleicht so, indem man zu Beginn einer Sitzung diese Variablen bestimmt und bei jeder Änderung in dieser Rows(1) mit Worksheet_Change aktualisiert?
Habe herausgefunden, es geht wahrscheinlich mit einer Deklaration am Beginn eines Moduls:
Public Sp1 As Long
Der Aufruf erfolgt dann mit
Modulname.Sp1
Gibt es auch eine Möglichkeit ohne dem vorangestellten "Modulname." (wegen der leichteren Lesbarkeit) ?
Vielleicht eine Variable, die über die Modulgrenzen hinaus wirkt?
LG, Barbara
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gibt es Variable für alle Module?
20.05.2018 09:28:39
Sepp
Hallo Barbara,
Variablen die du in einem allgemeinen Modul als Public deklarierst, gelten in der gesamten Mappe.
Wenn der Variablen-Name eindeutig ist, brauchst du den Modulnamen nicht angeben.
 ABCDEF
1Gruß Sepp
2
3

Anzeige
AW: Gibt es Variable für alle Module?
20.05.2018 09:32:33
Pascal
Hallo Barbara,
am besten legst du ein neues Modul für die öffentlichen Variablen an. Das ist übersichtlicher. Dann deklarierst du die Variablen wie du schon gesagt hast und schreibst eine Prozedur darunter. Diese kannst du dann z.B. im Change Event aufrufen.
Option Explicit
Public Sp1 As Long
Public Sp2 As Long
Sub GlobaleVariablenFüllen()
Sp1 = Worksheets(1).Rows(1).Find("Haus").Column
Sp2 = Worksheets(1).Rows(1).Find("Baum").Column
Sp3 = Worksheets(1).Rows(1).Find("Garten").Column
End Sub
Du kannst diese Variablen dann im ganzen Projekt verwenden und musst auch nicht den Modulnamen angeben. Also im Change Event könntest du einfach schreiben:
Call GlobaleVariablenFüllen
Gruß Pascal
Anzeige
AW: Gibt es Variable für alle Module?
20.05.2018 09:51:51
Barbaraa
Ach so, in einem in einem allgemeinen Modul. Jetzt geht's.
Funktioniert.
Danke für Eure Hilfe. Und so blitzschnell.
LGB
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Globale Variablen in Excel VBA effizient nutzen


Schritt-für-Schritt-Anleitung

  1. Neues Modul erstellen: Öffne den VBA-Editor (ALT + F11) und erstelle ein neues Modul.
  2. Variablen deklarieren: Deklariere die Variablen als Public, um sie im gesamten Projekt zugänglich zu machen. Beispiel:
    Public Sp1 As Long
    Public Sp2 As Long
  3. Prozedur zur Befüllung der Variablen: Schreibe eine Sub-Prozedur, die die Werte der Variablen zuweist. Zum Beispiel:
    Sub GlobaleVariablenFüllen()
       Sp1 = Worksheets(1).Rows(1).Find("Haus").Column
       Sp2 = Worksheets(1).Rows(1).Find("Baum").Column
    End Sub
  4. Aufruf der Prozedur: Rufe diese Prozedur im Change Event oder an einer geeigneten Stelle in deinem Code auf:
    Call GlobaleVariablenFüllen

Häufige Fehler und Lösungen

  • Fehler beim Zugriff auf Variablen: Stelle sicher, dass die Variablen als Public deklariert sind und sich im richtigen Modul befinden.
  • Variable nicht gefunden: Wenn du den Modulnamen angeben musst, könnte das darauf hindeuten, dass die Variable nicht korrekt als Public deklariert wurde.
  • Suchwert nicht gefunden: Überprüfe den Suchbegriff in Find(), um sicherzustellen, dass er tatsächlich in der Zeile vorhanden ist.

Alternative Methoden

  • Verwendung von Static: Wenn du eine Variable nur innerhalb einer Prozedur behalten möchtest, aber ihren Wert zwischen Aufrufen behalten willst, verwende Static:

    Static Sp1 As Long
  • Globale Variablen in Access VBA: Bei der Verwendung von Access kannst du Public Variablen ähnlich definieren, um sie in verschiedenen Formularen oder Modulen zu nutzen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie man eine globale Variable in einem Excel VBA-Projekt nutzen kann:

Option Explicit

Public Sp1 As Long
Public Sp2 As Long

Sub GlobaleVariablenFüllen()
    Sp1 = Worksheets(1).Rows(1).Find("Haus").Column
    Sp2 = Worksheets(1).Rows(1).Find("Baum").Column
End Sub

Sub BeispielNutzung()
    Call GlobaleVariablenFüllen
    MsgBox "Die Spalte von Haus ist: " & Sp1 & " und die von Baum ist: " & Sp2
End Sub

Tipps für Profis

  • Modulnamen vermeiden: Wenn du häufige Namen für deine Variablen verwendest, achte darauf, dass es keine Namenskonflikte gibt, um das Voranstellen des Modulnamens zu vermeiden.
  • Dokumentation: Halte deine Variablen und deren Verwendungszweck gut dokumentiert, um die Lesbarkeit und Wartung deines Codes zu verbessern.
  • Error Handling: Implementiere Fehlerbehandlung in deinen Prozeduren, um unerwartete Ergebnisse bei der Verwendung von Find() zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich eine globale Variable über mehrere Module definieren? Du kannst eine Public Variable in einem allgemeinen Modul deklarieren. Diese ist dann in allen anderen Modulen verfügbar.

2. Was passiert, wenn ich den Modulnamen vor meiner Variable angeben muss? Wenn der Modulname erforderlich ist, könnte das darauf hindeuten, dass die Variable nicht als Public deklariert wurde oder dass ein Namenskonflikt vorliegt.

3. Kann ich Public Variablen auch in Access VBA nutzen? Ja, Public Variablen können auch in Access VBA definiert werden und sind in verschiedenen Formularen und Modulen zugänglich.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige