Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variable für ganze Projekt!

Variable für ganze Projekt!
15.09.2005 23:12:15
wuntschi
Hallo an alle,
ich möchte gerne zu start des Programms ein Variable
strSprache = Worksheets("Optionen").Cells(1,255).Value
auslesen.
Frage 1: Ist es möglich das ich dann auch Modul übergreifend auf diese
Variable strSprache zugreifen kann?
Frage 2: Wenn ich jetzt an einer zweiten Stelle den Wert aktualiesieren
möchte , wie kann ich dieses machen?
Gruß
wuntschi
Anzeige

23
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variable für ganze Projekt!
15.09.2005 23:16:06
Ramses
Hallo
Definiere in einem Modul deine Variable
Global strSprache as Integer/String/Boolean
oder was auch immer.
Im Workbook-Open Ereignis kannst du dann die Variable füllen und jederzeit drauf zugreifen
Aktualisieren kannst du die Variable jederzeit neu
Gruss Rainer
AW: Variable für ganze Projekt!
15.09.2005 23:30:27
wuntschi
Hallo Rainer,
kann ich sie auch in dem Workbook open deklarieren?
Gruß
wuntschi
Anzeige
AW: Variable für ganze Projekt!
15.09.2005 23:36:10
Ramses
Hallo
Nein, Variablen die allgemein gültig sein sollen müssen in einem Modul deklariert werden.
Deklarierst du sie in einem Klassenmodul, können sie nicht mehr von anderen Makros angesprochen werden.
Gruss Rainer
AW: Variable für ganze Projekt!
16.09.2005 00:03:10
wuntschi
Hallo Rainer,
spielst auf den Hinweis hin der besagt das man das in einem Modul deklarieren muß.
Wenn ja ich verstehe noch nicht ganz ob das
SUB Workbook OPEN
auch ein Modul ist?
gruß
wuntschi
Anzeige
AW: Variable für ganze Projekt!
16.09.2005 00:07:21
Ramses
Hallo
kannst du mir dann mal erklären wo dann die ganzen Codes herkommen die du in deiner Beispielmappe hast ?
Tut mir leid, aber du stellst hier Mappen rein, mit sehr umfangreichen und komplexen Codes,.... und hast keine Ahnung was das "Workbook_Open" Ereignis ist ?
DAS steht in deiner Beispielmappe

Private Sub Workbook_Open()
ModulDiverseFunktion.menü_deutsch
ModulDiverseFunktion.menü_englisch
End Sub

Also bitte sag mir nicht, dass du das nicht kennst ;-)
Gruss Rainer
Anzeige
AW: Variable für ganze Projekt!
16.09.2005 00:20:23
wuntschi
Hallo Rainer,
ich möchte dir kurz etwas zu meiner Person sagen,
ichbeschäftige mich seit ca 5 Wochen mit Excel und VBA,
würde mich als Quereinsteiger bezeichnen.
Ich habe sehr viel hier im Forum gelernt,
aber wie es eben so ist merke ich jetzt gerade
das ich einige Grundlagen nicht
mit bekommen habe.
Ich habe derzeit zum Beispiel:
in 10 Modulen
und 20 UserForm
eine Makro drin in dem ich eine
Varibel mit dem Namen intSpracheSpalte immer wieder neu auslese
und zwar wie folgt,
DIM intSpracheSpalte as integer
intSpracheSpalte = Worksheets("Optionen").Cells(1,255) Value
und von Solchen Variabeln habe ich noch einge mehr
wo ich mir zustände her hole.
Nun wollte ich eben nur einmal z.B. dieses machen
und dann die Variabel in allen UserForm und Modulen verwenden.
Und bitte glaube mir ich habe im Moment keine Ahnung wie
ich das hinbekommen soll.
Gruß
wuntschi
Anzeige
..wenn ich mich nochmal...
16.09.2005 00:33:49
MichaV
..einmischen darf ;o)
"Ich habe derzeit zum Beispiel:
in 10 Modulen
und 20 UserForm"
Schreibe in irgendein von Deinen 10 Modulen ganz oben (im Deklarationsbereich, über der ersten Sub)
DIM intSpracheSpalte as integer
Nun kannst Du aus allen anderen Modulen und UserForms und Objektmodulen (Tabellen usw) auf intSprache zugreifen. Die Dims in den einzelnen Prozeduren musst Du dann aber löschen!!!
Gruß- Micha
Anzeige
AW: ..wenn ich mich nochmal...
16.09.2005 00:42:59
wuntschi
Hallo Micha,
und wo sage ich nun einmal was in der intSprache stehen soll?
gruß
wuntschi
AW: ..wenn ich mich nochmal...
16.09.2005 00:49:09
MichaV
Hallo,
siehe einen Threat- Zweig weiter unten ;o)
Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.
Gruß- Micha
Anzeige
AW: ..wenn ich mich nochmal...
16.09.2005 01:06:06
wuntschi
Hallo ihr beiden,
ich habe es nun begriffen!
danke für den langen Atem.
gruß
wuntschi
Gratulation! Lasst und feiern ;o) o.w.T.
16.09.2005 01:12:05
MichaV
AW: Variable für ganze Projekt!
15.09.2005 23:36:10
wuntschi
Hallo,
ich bekomme folgende Fehlermeldung bei deklarieren
https://www.herber.de/bbs/user/26628.xls
gruß
wuntschi
Anzeige
AW: Variable für ganze Projekt!
15.09.2005 23:37:31
Ramses
Hallo
Also dafür muss man nun wirklich keine DAtei hochladen :-(
Die Meldung sagt doch eigentlich alles und ist selbsterklärend!
Gruss Rainer
AW: Variable für ganze Projekt!
15.09.2005 23:39:52
wuntschi
Hallo,
mir sagt das aber leider noch nichts!
gruß
wuntschi
AW: Variable für ganze Projekt!
15.09.2005 23:53:20
MichaV
Hallo wuntschi,
bevor Ramses den Seth auf Dich wirft:
schreib nicht Global sondern Public. Dann ist die Variable aber nur innerhalb des Objektmodules (also des Tabellenblattes oder der UserForm) für alle Subs und Functions abgreifbar. Nur wenn Du sie in einem allgemeinen Modul Public (oder Global) deklarierst, ist sie für alle anderen (Objekt-)Module abgreifbar!
Ich muß dir Recht geben, so eindeutig steht es nicht in dem Hinweis. Du hast keine Konstante, keine Zeichenfolge fester Länge, kein benutzderdefiniertes Datenfeld und keine Declare Anweisung. Aber es ist so wie Ramses Dir schon ind er ersten Antwort gesagt hat: Es geht nur in einem Standart- Modul.
Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Variable für ganze Projekt!
15.09.2005 23:56:20
Ramses
Hallo Micha
Danke :-)
Aber "Public" ist Standard,... das musst du gar nicht schreiben :-)
Da kannst du auch einfach
Dim strSprache as String
schreiben. Hat den gleichen Effekt,... aber "Public" sieht irgendwie eindrucksvoller aus ;-)
Gruss Rainer
AW: Variable für ganze Projekt!
16.09.2005 00:04:22
MichaV
Hallo Rainer
ja, aber wozu dann das Global? Kannte ich noch nicht, und die OH hüpft gleich zu Public. Hättest Du doch auch weglassen können ;o) ...sieht aber noch besser aus als Public.
Gruß- Micha
Anzeige
AW: Variable für ganze Projekt!
16.09.2005 00:15:12
Ramses
Hallo Micha
"Global" ist History und aus Tradition,... und in meinem "Alter" ;-)
Du hast natürlich recht, es reicht die Variable in einem Modul ausserhalb einer Prozedur zu deklarieren, um Sie aus innerhalb des Projektes von überall anzusprechen.
Gruss Rainer
AW: Variable für ganze Projekt!
16.09.2005 00:35:41
wuntschi
Hallo Micha,
folgendes habe ich in ein makro geschrieben
************************************************************
public strSpalteSprache As Integer
intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value
Public

Sub std_Var_reset()
intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value
End Sub

************************************************************
aber er sagt das intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value
nicht ausserhalb einer

Sub prozedur liegen darf!
was ist hier los?
gruß wuntschi

Anzeige
AW: Variable für ganze Projekt!
16.09.2005 00:45:15
MichaV
Hallo,
rate mal, warum der Deklarationsbereich so heißt. Weil man da nur Deklarieren darf! Du willst aber deklarieren und zuweisen. Mach mal so:
-----------------------------------

public strSpalteSprache As Integer
Sub std_Var_reset()
msgbox "Die Sprache ist " & strSpalteSprache
End Sub

-----------------------------------
Deine Zeile intSpalteSprache = Worksheets("Optionen").Cells(1, 255).Value schreibst Du in eine Prozedur, die auf jeden Fall abgearbeitet wird, z.B. in die Worksheet_Open- Ereignisprozedur.
Gruß- Micha
Anzeige
AW: Variable für ganze Projekt!
16.09.2005 01:10:39
wuntschi
Hallo Micha,
eine Frage noch,
soll ich alle Variabeln im Modul im Deklarationsbereich deklarieren?
gruß
wuntschi
AW: Variable für ganze Projekt!
16.09.2005 01:22:19
MichaV
Hallo,
neee, nur die öffentlichen...
ich geh schlafen, N8!
Gruß- Micha
AW: Variable für ganze Projekt!
15.09.2005 23:53:46
Ramses
Hallo
"...mir sagt das aber leider noch nichts!.."
Dann lies meinen vorherigen Beitrag
Gruss Rainer
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Globale Variablen in Excel VBA effektiv nutzen


Schritt-für-Schritt-Anleitung

  1. Variable deklarieren: Um eine globale Variable in Excel VBA zu erstellen, öffne ein Modul und füge folgende Zeile hinzu:

    Public strSprache As String
  2. Wert zuweisen: Um der Variable einen Wert zuzuweisen, kannst du dies in einer Sub-Prozedur machen, beispielsweise im Workbook_Open-Ereignis:

    Private Sub Workbook_Open()
       strSprache = Worksheets("Optionen").Cells(1, 255).Value
    End Sub
  3. Zugriff auf die Variable: Du kannst nun von jedem anderen Modul oder UserForm auf strSprache zugreifen, solange die Variable im allgemeinen Modul definiert wurde.

  4. Variable aktualisieren: Um den Wert der globalen Variable zu aktualisieren, schreibe einfach in einer beliebigen Sub:

    Sub UpdateSprache()
       strSprache = Worksheets("Optionen").Cells(2, 255).Value
    End Sub

Häufige Fehler und Lösungen

  • Fehlermeldung bei der Deklaration: Wenn du eine Fehlermeldung erhältst, dass die Variable nicht außerhalb einer Prozedur liegen darf, stelle sicher, dass du die Wertzuweisung in einer Sub vornimmst und nicht im Deklarationsbereich.

  • Zugriffsprobleme: Wenn du auf die Variable nicht zugreifen kannst, überprüfe, ob die Variable im richtigen Modul (allgemeines Modul, nicht Klassenmodul) deklariert ist.


Alternative Methoden

  • Globale Variablen in Access VBA: Die Verwendung von öffentlichen Variablen ist auch in Access möglich, wo du eine Public-Deklaration in einem Modul machst, um sie in verschiedenen Formularen und Modulen zu nutzen.

  • Excel VBA globale Konstante definieren: Du kannst auch Konstanten definieren, die keinen Wert ändern können. Dies geschieht wie folgt:

    Public Const MAX_WERT As Integer = 100

Praktische Beispiele

  1. Globale Variable für Sprache:

    Public strSprache As String
    
    Private Sub Workbook_Open()
       strSprache = Worksheets("Optionen").Cells(1, 255).Value
    End Sub
    
    Sub ShowSprache()
       MsgBox "Die aktuelle Sprache ist: " & strSprache
    End Sub
  2. Globale Variable für Status:

    Public intStatus As Integer
    
    Sub SetStatus()
       intStatus = 1 ' Aktiv
    End Sub
    
    Sub CheckStatus()
       If intStatus = 1 Then
           MsgBox "Der Status ist aktiv."
       End If
    End Sub

Tipps für Profis

  • Verwende Dim für lokale Variablen und Public für globale Variablen: Dies hilft, den Code übersichtlich zu halten und unerwartete Fehler zu vermeiden.

  • Initialisiere globale Variablen im Workbook_Open-Ereignis: Dadurch stellst du sicher, dass die Variablen beim Start des Programms die richtigen Werte haben.

  • Dokumentiere deine Variablen: Füge Kommentare hinzu, um klarzustellen, wofür jede globale Variable verwendet wird, um spätere Verwirrungen zu vermeiden.


FAQ: Häufige Fragen

1. Kann ich globale Variablen in UserForms verwenden?
Ja, wenn du eine globale Variable in einem Modul deklarierst, kannst du sie in allen UserForms und Modulen verwenden.

2. Was passiert, wenn ich die Variable nicht im allgemeinen Modul deklariere?
Wenn du die Variable in einem Klassenmodul deklarierst, ist sie nur innerhalb dieses Moduls verfügbar und kann nicht von anderen Modulen oder UserForms angesprochen werden.

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