Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Globale Variablen wie definieren?
14.08.2014 17:46:45
Jan
Hi,
kann ich in "Diese Arbeitsmappe" eine Variable definieren, die auch innerhalb der Module verfügbar ist?
Oder besser formuliert, kann ich eine Variable im gesamten Dokument verfügbar machen? (mir ist eigentlich egal wo ;-)
Wenn ja, wie?
Mir genügen auch die richtigen Stichworte, dann schaue ich selbst nach, das Problem habe ich leider (noch) häufig.
Danke im Voraus,
Jan

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Globale Variablen wie definieren?
14.08.2014 17:51:32
Hajo_Zi
Hallo Jan,
Nein, das geht nur im Modul.

AW: Globale Variablen wie definieren?
14.08.2014 17:56:35
Jan
Hi Hajo,
okay. Ich fülle in dem Excelobjekt "Die Arbeitsmappe" - sorry, wenn ich dafür aktuell nur die blöden Begriffe habe - innerhalb der Methode "Private Sub Workbook_Open()" Zellen mit Defaultwerten.
Die selben werte hole ich auch ab und an innerhalb eines Moduls, nur muss ich aktuell alles doppelt schreiben. Kann ich innerhalb von "Diese Arbeitsmappe" einfach eine Funktion aufrufen, die innerhalb des Moduls liegt?
Habe ich das richtig verstanden?
Viele Grüße,
Jan

Anzeige
AW: Globale Variablen wie definieren?
14.08.2014 18:07:04
Hajo_Zi
Hallo Jan,
Du kannst bei Open auch ein Makro aufrufen Makro
Gruß Hajo

AW: Globale Variablen wie definieren?
14.08.2014 18:15:21
Jan
Dann mache ich das so (bzw. probiere mich damit :-), danke Hajo

AW: Globale Variablen wie definieren?
14.08.2014 17:56:50
Udo
Hajo was ist mit "Public". Also Puplic statt Dim.
(Bin selber Anfänger)

AW: Globale Variablen wie definieren?
14.08.2014 18:11:50
Hajo_Zi
Aber nicht unter den Tabellen und DieseArbeitsmappe.
Gruß Hajo

AW: Globale Variablen wie definieren?
15.08.2014 16:32:27
Adis
Hallo
Global oder Public habe ich oft in meinen Programmen als globale Variable verwendet. Bei mir gings.
Ebenso Global Const für Konstanten wie Adressen die für alle Module galten. Dazu habe ich ein extra
Global Modul angelegt damit ich nicht alle Variable und Konstanten dreifach schreiben musste.
Beim Call Aufruf bleibt der Wert der Variable erhalten. Schön beim Sortieren, weil ich mit Adr1 die Sortier Adresse für Key1 übergeben habe. Oder Anfang und End Adressen für das aufgerufene Programm. Werte von KontrollBoxen als Optxx, oder
Farb Index für die Schrift in bestimmten Zellen. Im Global Modul gab es immer einen Adressen Test, um falsche Selektionen
zu vermeiden oder Adressen Fehler über MsgBox schnell aufzuspüren.
Manchmal programmierte ich auch ein Makro mit dem Namen Setup_Adresse und lud alle wichtigen Adressen und KontrollBox Werte vor dem Makrostart in die Variablen. Gültig für alle Makros die ich aufrief.
Ob meine Deklaration 100% richtig ist kann ich nicht sagen, ich bin kein Profi. In der Praxis hat es funktioniert. Dann stehe ich
auf dem Standpunkt, einfach probieren und sich freuen wenn es kappt.
Probier es einfach aus.
Hier ein Beispiel Gruss Adis
' Persön.Datei: Stand
' mit Msgbox Adressen-Test 14.09.01
' ********************************************
Const FLab = 44 'Jmp Label Farb Code Tabelle:
Const FKom = 10 'Kommentar
Const FFun = 23 'Function
Const FWith = 30 'With Klammer
Const FCase = 29 'Select Case
' Globale Variable für alle Module
Global Const SuchEing = "D4" ' Eingabezelle Suchbegriff-Text
Global Const FiltEing = "F4" ' Anf-Adresse Filter-Eingabe
Global Const FiltBer = "F4:F6" ' Ber-Adresse Filter-Eingabe
Global Const FiltEnd = "F1000" ' End-Adresse Filter-Spalte
Global Const Down1Anf = "L11" ' DropDown1Anf Listen-Anf DropDown1
Global Const ListAnf = "D11" ' Anf-Adresse Suchliste
Global Const ListEnd = "D1000" ' End-Adresse Suchliste
Global Const ListBer = "B10:I1000" ' Ber-Adresse Suchliste
Global Const SortBer = "B11:I1000" ' Ber-Adresse Suchliste
Global Const DateiAnf = "AB10" ' Anf-Adresse Makro-Dateien
Global Const SuEndCell = "AT1" ' End-Adresse für Suchlauf
Global Const Suchmax = 1000 ' Suchlauf max 1000
Global Const StrgLä2 = 30 ' Stringlä 2.Zeile (" _" einzeilig)
' allgemeine Varible für Adresse, String, Zähler, etc.
Global Adr As String, Edr As String ' Anf-End Adresse allgemein
Global Adr1 As String, Adr2 As String ' Sortier-Schlüßel 1-2
Global AcAdr As String, AcVal As String ' AktiveZelle: Adresse + Wert
Global AcValn As String, AcValv As String ' nachfolgende/ vorherige AcZelle
Global Strg1 As String, Strg2 As String ' String zum zerlegen, Teilstring
Global Spalte As String, Zeilen As Integer ' Spalte (für Sub-Aufruf) ; Zeilen
Global Flg As String, i, j, l, Zahl ' Zähler allgemein (** i als Variant!)
' Set-Varible (Objekte/Schaltflä), Suchliste Anf/End-Adressen
Global dlg As Object, ok As Integer ' Objekt Zuweisung ; ok Variable
Global down1 As Object, down2 As Object ' Objekt Zuweisung DropDown 1+2
Global Schflä As String, SchfläNr As Integer ' Schaltfläche(Caller) ; Schflä-Nr
Global ListAdr As String, ListEdr As String ' Suchliste akt. Anf/End-Adresse
' Such- unf Filternamen incl. Teilstrings
Global Suchname As String, Filtname As String ' Such- Filtername aus Eingabe
Global SuName As String, FiName As String ' Haupt Such- Filtername
Global SName2 As String, SName3 As String ' Teil-Suchname 2-3
Global FName2 As String, FName3 As String ' Teil-Filtname 2-5
Global FName4 As String, FName5 As String
Global AnfName As String, EndName As String ' Anf-End Namen aus DropDown 1+2
' Option Kontrollbox 1-13 ; Suchfilter Flag (mit/ohne)
Global OptNoCom As Integer, OptNoDim As Integer ' Optionen Kontrollbox 1-13
Global OptNoSet As Integer, OptNoSb As Integer
Global OptNoIf As Integer, OptNoFor As Integer
Global OptCutCom As Integer, OptNoDop As Integer
Global OptClList As Integer
' Msgbox Adressen-Test 14.09.01
Sub Adressen_Test()
Sheets("MakroBsp").Select
Range(SuchEing).Select
MsgBox "Suchtext Eingabe:  " & Selection.Address(False, False)
Range(SuchEing).Offset(0, 1).Select
MsgBox "Suchen ohne ...  " & Selection.Address(False, False)
Range(FiltBer).Select
MsgBox "Filter-Eingabe Ber:  " & Selection.Address(False, False)
Range(ListBer).Select
MsgBox "Suchlist Bereich:  " & Selection.Address(False, False)
Range(ListAnf).Select
MsgBox "Suchliste Anfang:  " & Selection.Address(False, False)
Range(ListEnd).Select
MsgBox "Suchliste Ende:  " & Selection.Address(False, False)
Range(ListAnf).Offset(0, 2).Select
MsgBox "Filter Anfang:  " & Selection.Address(False, False)
Range(ListAnf).Offset(0, 4).Select
MsgBox "Anf-Name Anfang:  " & Selection.Address(False, False)
Range(ListAnf).Offset(0, 5).Select
MsgBox "End-Name Anfang:  " & Selection.Address(False, False)
Range(Down1Anf).Select
MsgBox "DropDowns Anfang:  " & Selection.Address(False, False)
Range(DateiAnf).Select
MsgBox "Makro-Dateien Anfang:  " & Selection.Address(False, False)
Range(SuEndCell).Select
MsgBox "Such End-Zelle:  " & Selection.Address(False, False)
Range(SuchEing).Select  'Ende
End Sub

Anzeige
AW: Globale Variablen wie definieren?
14.08.2014 18:08:39
Daniel
HI
1. Variablen, die auch von Makros in anderen Modulen verwendet werden sollen, müssen oberhalb der Makros, direkt unter Option Explicit mit dem Befehl Public deklariert werden:
Option Explicit
Public MeineGlobaleVariable As String
Sub Makro1()
...
2. dies sollte in einem allgemeinen Modul (Modul1) geschehen.
Nur wenn die Deklaration in einem allgemeinen Modul erfolgt ist, kann die Variable auch in allen anderen Modulen direkt verwendet werden:
MeineGlobaleVariable = "Hallo Welt"

3. Wenn die Deklartion in einem speziellen Modul erfolgt (also "DieseArbeitsmappe", "Tabelle1", "Userform1" usw), dann kann die Variable zwar auch in jedem anderen Modul verwendet werden, aber in diesem Fall muss man dann den Namen des Moduls, in dem die Deklaration erfolgt, voranstellen:
DieseArbeitsmappe.MeineGlobaleVariable = "Hallo Welt"
Gruß Daniel

Anzeige
AW: Globale Variablen wie definieren?
14.08.2014 18:14:46
Jan
Daniel, vielen Dank für diese aufschlussreiche Info.
Jan

AW: gib mal Public bei RECHERCHE ein
14.08.2014 18:20:28
Jan
Alles klar, ich habe nur "Listensuche" benutzt. War für mich missverständlich. Vielen Dank.

21 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige