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