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

Forumthread: Public Variable funktioniert nicht.

Public Variable funktioniert nicht.
03.07.2017 14:42:34
Anna
Hallo zusammen,
ich bin am Verzweifeln. Ich habe Variablen außerhalb des Subs mittels Public deklariert. Innerhalb des Moduls funktionieren diese auch, aber sobald ich sie in einem andren Modul verwende, bekomme ich Fehlermeldungen, wie "Variable nicht deklariert" oder "Parameter ist nicht optional". Ich habe schon Einiges versucht, aber alles blieb ergebnislos. Ich hoffe, ihr könnt mir helfen.
Liebe Grüße
Anna
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Public Variable funktioniert nicht.
03.07.2017 15:02:16
onur
Poste mal die Datei.
AW: Public Variable funktioniert nicht.
03.07.2017 15:39:52
Nepumuk
Hallo Anna,
in welchem Modul hast du die Variable deklariert?
Gruß
Nepumuk
AW: Public Variable funktioniert nicht.
03.07.2017 15:54:55
Anna
Hallo,

Public year As Integer
Sub test1()
year = 73
MsgBox year
End Sub
Sub test2()
Dim s As Integer
Tabelle2.test1
s = year + 1
MsgBox s
End Sub
Sub test1 und die Deklaration sind im Moudl Tabelle2 und Sub test2 ist in einem "normalen" Modul.
Der Original-Code ist viel länger und komplexer aber selbst für diesen Test hat es nicht funktioniert.
Grüße Anna
Anzeige
AW: Public Variable funktioniert nicht.
03.07.2017 16:04:45
Daniel
Hi
damit deine Variablen wirklich "Public" sind, muss die Deklaration in einem allgemeinen Modul erfolgen (z.b. Modul1)
deklarierst du die Variablen in einem Tabellenblattmodul (Tabelle1) oder im Modul der Mappe (DieseArbeitsmappe), so musst du, wenn du diese Variable in einem anderen Modul verwenden willst, den Modulnamen davor setzen.
also:
Tabelle1.X = 1
DieseArbeitsmappe.Y = 2

Das liegt daran, dass die Tabellenblattmodule und DieseArbeitsmappe eigenständige Module sind und in jedem Modul die gleichen Variablen- und Prozedurbezeichnungen verwendet werden können wie in den anderen Modulen (sonst würde das Prinzip der Eventmakros, welche ja in jedem Modul gleich sind, nicht funktionieren)
Um jetztd die Eindeutigkeit zu Schaffen, muss man daher den Modulnamen mit hinzunehmen.
die allgemeinen Module sind jedoch nicht eigenständig, wenn du mehrere davon hast, werden diese wie ein großes Modul betrachtet und es ist nicht möglich, den gleichen Variablen- oder Prozedurnamen in mehreren allgemeinen Modulen zu verwenden.
Da hier eine Variablenbezeichnung nur einmal vorkommen kann, ist das Voranstellen des Modulnamens nicht erforderlich.
Gruß Daniel
Anzeige
AW: Public Variable funktioniert nicht.
03.07.2017 16:19:48
Anna
Hallo Daniel,
vielen Dank. Das macht Sinn. Ich hatte etwas in der Richtung vermutet, aber im Netz war nichts Konkretes zu finden. Eine kleine Frage dazu noch: Die Variable, die mit Public in einem allgemeinen Modul deklariert wurde, kann ich dann auch in UserForms verwenden? Die bestehen ja allgemein aus Private Subs? Dankeee!!!
Grüße Anna
Anzeige
AW: Public Variable funktioniert nicht.
03.07.2017 16:38:13
Daniel
Hi
ja, was in einem allgemeinen Modul als Public oberhalb der Makros deklariert ist, ist ohne weiteren Zusatz in jedem anderen Modul verwendbar, auch in den Userformmodulen.
deklarierst du die Public-Variable im Modul der Userform, kannst du diese in anderen Modulen nur verwenden, wenn du den Modulnamen voranstellst.
btw, man kann die Private-Subs in Public-Subs umbenennen.
Dann ist es bspw möglich, das Click-Event eines Userformbuttons über ein Makro in einem allgemeinen Modul auszulösen.
Die Automatik der Eventmakros hängt nicht am Private oder Public, sondern nur am Namen.
Gruß Daniel
Anzeige
AW: Public Variable funktioniert nicht.
03.07.2017 16:56:16
Anna
Hey...,
nochmal vielen vielen Dank. Jetzt funktioniert alles super.
Grüße
Anna
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Public Variablen in Excel VBA richtig nutzen


Schritt-für-Schritt-Anleitung

  1. Deklaration einer Public Variable: Um eine Public Variable zu deklarieren, öffne ein allgemeines Modul (z.B. Modul1) und füge folgenden Code ein:

    Public year As Integer
  2. Verwendung in Subs: Du kannst die Variable dann in verschiedenen Subs innerhalb des gleichen Moduls verwenden:

    Sub test1()
       year = 73
       MsgBox year
    End Sub
  3. Aufruf aus einem anderen Modul: Wenn du die Variable in einem anderen Modul verwenden möchtest, stelle sicher, dass du den Modulnamen angibst:

    Sub test2()
       Dim s As Integer
       Modul1.test1 ' Aufruf der Sub aus Modul1
       s = year + 1 ' Verwendung der Public Variable
       MsgBox s
    End Sub
  4. Verwendung in UserForms: Public Variablen, die im allgemeinen Modul deklariert sind, können auch in UserForms ohne zusätzliche Deklaration verwendet werden.


Häufige Fehler und Lösungen

  • Fehlermeldung: "Variable nicht deklariert": Stelle sicher, dass die Public Variable im richtigen Modul deklariert ist. Wenn du sie in einem Tabellenblattmodul deklarierst, musst du den Modulnamen voranstellen.

  • Fehlermeldung: "Parameter ist nicht optional": Dies kann auftreten, wenn die Sub, die du aufrufst, Parameter benötigt, aber keine übergeben werden. Überprüfe die Definition der Sub und stelle sicher, dass du alle erforderlichen Parameter übergibst.


Alternative Methoden

  • Globale Variablen: Du kannst auch globale Variablen verwenden, die über Public deklariert sind. Diese sind in allen Modulen verfügbar, sofern sie im allgemeinen Modul deklariert wurden.

  • Private vs. Public Variablen: Überlege, ob eine Private Variable in deinem Modul ausreicht. Private Variablen sind nur innerhalb des Moduls sichtbar und können Konflikte mit Variablen in anderen Modulen vermeiden.


Praktische Beispiele

  1. Beispiel mit Public Variable:

    Public counter As Integer
    
    Sub incrementCounter()
       counter = counter + 1
       MsgBox "Counter: " & counter
    End Sub
  2. Verwendung in UserForms: In einem UserForm kannst du die Public Variable direkt verwenden:

    Private Sub CommandButton1_Click()
       incrementCounter
    End Sub

Tipps für Profis

  • Eindeutige Benennung: Achte darauf, dass du eindeutige Namen für deine Public Variablen wählst, um Verwechslungen zu vermeiden, besonders wenn du mehrere Module verwendest.

  • Dokumentation: Kommentiere deinen Code gut, insbesondere bei der Verwendung von Public Variablen, damit du und andere Benutzer später nachvollziehen können, wo und wie die Variablen eingesetzt werden.


FAQ: Häufige Fragen

1. Wo sollte ich meine Public Variablen deklarieren? Am besten in einem allgemeinen Modul, um sicherzustellen, dass sie in allen anderen Modulen verfügbar sind.

2. Kann ich Public Variablen in UserForms verwenden? Ja, Public Variablen, die in einem allgemeinen Modul deklariert sind, können problemlos in UserForms verwendet werden.

3. Was passiert, wenn ich eine Variable im Tabellenblattmodul deklariere? Wenn du eine Variable im Tabellenblattmodul deklarierst, musst du den Modulnamen verwenden, um darauf zuzugreifen. Ansonsten wird die Variable nicht erkannt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige