Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Userform
BildScreenshot zu Userform Userform-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema Label
BildScreenshot zu Label Label-Seite mit Beispielarbeitsmappe aufrufen

Globale Variablen wie definieren?

Betrifft: Globale Variablen wie definieren? von: Jan Arbus
Geschrieben am: 14.08.2014 17:46:45

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

  

Betrifft: AW: Globale Variablen wie definieren? von: Hajo_Zi
Geschrieben am: 14.08.2014 17:51:32

Hallo Jan,

Nein, das geht nur im Modul.

GrußformelHomepage


  

Betrifft: AW: Globale Variablen wie definieren? von: Jan Arbus
Geschrieben am: 14.08.2014 17:56:35

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


  

Betrifft: AW: Globale Variablen wie definieren? von: Hajo_Zi
Geschrieben am: 14.08.2014 18:07:04

Hallo Jan,

Du kannst bei Open auch ein Makro aufrufen Makro

Gruß Hajo


  

Betrifft: AW: Globale Variablen wie definieren? von: Jan Arbus
Geschrieben am: 14.08.2014 18:15:21

Dann mache ich das so (bzw. probiere mich damit :-), danke Hajo


  

Betrifft: AW: Globale Variablen wie definieren? von: Udo Kowalleck
Geschrieben am: 14.08.2014 17:56:50

Hajo was ist mit "Public". Also Puplic statt Dim.
(Bin selber Anfänger)


  

Betrifft: AW: Globale Variablen wie definieren? von: Hajo_Zi
Geschrieben am: 14.08.2014 18:11:50

Aber nicht unter den Tabellen und DieseArbeitsmappe.

Gruß Hajo


  

Betrifft: AW: Globale Variablen wie definieren? von: Adis
Geschrieben am: 15.08.2014 16:32:27

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: < Modul-Mappe > 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



  

Betrifft: AW: Globale Variablen wie definieren? von: Daniel
Geschrieben am: 14.08.2014 18:08:39

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


  

Betrifft: AW: Globale Variablen wie definieren? von: Jan Arbus
Geschrieben am: 14.08.2014 18:14:46

Daniel, vielen Dank für diese aufschlussreiche Info.
Jan


  

Betrifft: gib mal Public bei RECHERCHE ein von: robert
Geschrieben am: 14.08.2014 18:13:11

https://www.herber.de/forum/checklist.htm


Gruß robert


  

Betrifft: AW: gib mal Public bei RECHERCHE ein von: Jan Arbus
Geschrieben am: 14.08.2014 18:20:28

Alles klar, ich habe nur "Listensuche" benutzt. War für mich missverständlich. Vielen Dank.


 

Beiträge aus den Excel-Beispielen zum Thema "Globale Variablen wie definieren?"