Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1356to1360
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
Inhaltsverzeichnis

Globale Variablen nutzen

Globale Variablen nutzen
08.04.2014 11:17:04
TommiH
Moin,
ich habe eine kleine Verständnisfrage. Ich habe ein VBA-Makro (also ein SUB) geschrieben, in welchem ich 3-4 andere SUBs aufrufe.
In ALLEN möchte ich aber eine Farbinformation nutzen, ohne die jedesmal bei den CALLs mit übergeben zu müssen.
Ist das irgendwie (einfach) möglich?
Ich dachte halt an eine art globaler Variable/Konstante, aber jeder Versuch scheitert mit einer Fehlermeldung (also Public usw.)
Kann mir da jemand einen Tip geben ob ich um die Var-Übergabe nicht drumrumkomme oder ob/wie es doch geht?
LG,
Tommi

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

Betreff
Datum
Anwender
Anzeige
AW: Globale Variablen nutzen
08.04.2014 11:18:26
Hajo_Zi
Public darf nicht in einem Makro sein.

AW: Globale Variablen nutzen
08.04.2014 11:33:42
TommiH
Huhu Hajo,
okay, das habe ich auch herausgefunden - ABER ;) - gibt es da eine andere Lösung? Oder andersrum, wenn nicht in einem Makro, wo dann?
Ich dachte generell wenn ich Programmcode schreibe, steht der in einem SUB() - und das kann ich dann aufrufen und nutzen (in Excel einem Menüpunkt zuordnen)
Aber ich habe das Gefühl das ich da falsch liege ;)
Nur wie macht man es dann - richtig?
Oder wenn nicht PUBLIC - wie dann?
LG,
Tommi

Anzeige
AW: Globale Variablen nutzen
08.04.2014 11:37:13
Hajo_Zi
Hallo Tommi,
eine andere Variante als Public ist mir nicht bekannt.
Direkt nach Option Explicit.
Gruß Hajo

AW: Globale Variablen nutzen
08.04.2014 11:43:23
TommiH
Hallo Hajo,
okay, dann definiere ich die Var einfach in jedem SUB ist ja auch nur eine Definition, auch kein Weltuntergang.
Hm, kann man sowas wie
.LineStyle = xlDouble
.Weight = xlThin
eigentlich 'global' festlegen?
Wenn ich z.B. mehrere Linien hintereinander ziehen möchte und immer den Stil und die Breite nutzen möchte, muss ich die dann jedesmal angeben oder kann ich die irgendwo als default festlegen?
With Range(Cells(ob, li), Cells(un, re)).Borders(xlEdgeRight)
.LineStyle = xlDouble
.Weight = xlThin
.ColorIndex = FarbeRahmen
End With
Wenn ich sowas 4-5x hintereinander brauche wäre ein globales setzen schon praktisch.
Tommi

Anzeige
So, jetzt mal 'Butter bei die Fische', ...
08.04.2014 14:22:20
Luc:-?
…Tommi;
1. Du hast Hajo offensichtlich nicht verstanden; GlobalVariablen wdn stets am ModulAnfang (nach den Option-Zeilen), außerhalb jedweder Prozedur deklariert. Mit dem Schlüsselwort Public (statt Dim ) gelten sie dann im ganzen Projekt. Wird eine Variable gleichen Namens außerdem in einer Prozedur deklariert, hat diese Vorrang vor der globalen → die globale wird dann in dieser Prozedur nicht verwendet. Das hättest du auch in der VBE-Hilfe nachlesen können! :-/
2. Alternativ kann eine Variable auch am Anfang eines (Dok-)KlassenModuls deklariert wdn. Diese kann dann allerdings nur über das KlassenModul angesprochen wdn. Heißt Letzteres bspw intern Tab1 (InternName nicht Titel!), dann mit Tab1.varName.
3. Die von dir genannten Range-Eigenschaften haben bereits Default-Werte, nur stimmen die nicht in jedem Fall mit deinen Wünschen überein. Für Weight hast du den Default-Wert angegeben, für LineStyle nicht. Außerdem gibt's da einen gewissen Zusammenhang zwischen beiden. Ansonsten wdn hier xl-eigene Konstanten verwendet, die in VBA bereits als Enumerationen vorliegen. Wie eine Tabelle gestaltet sein soll, kann man übrigens auch (über Styles ) vorwählen. Wird in jedem Xl-Kopf angezeigt. FarbeRahmen kannst du natürlich auch auf die o.g. Art global festlegen.
Gruß Luc :-?

Anzeige
Public Variable muss ausserhalb eines
08.04.2014 14:01:05
EtoPHG
Sub - End Sub Konstrukts stehen, Tommi
Also z.B.
Option Explicit
Public DasDatum As Double
Sub Heute()
DasDatum = Date
MsgBox "Heute ist ein " & Format(DasDatum, "dddd")
Morgen
End Sub
Sub Morgen()
MsgBox "Morgen wird es " & Format(DasDatum + 1, "dddd")
End Sub
Gruess Hansueli

AW: Public Variable muss ausserhalb eines
09.04.2014 13:57:28
TommiH
Hallo Hansueli,
okay, das 'Teil' setzt man also an den Anfang einer 'Moduldatei' und das erzwingt die Deklaration von Variablen (hat direkt eine eigentlich nichtgenutzte entdeckt).
Und dahinter kann ich also globale Variablen definieren - hat geklappt, super!
Wenn ich mit F8 den Code prüfe, dann muss ich aber trotzdem in der SUB sein zum starten, ich kann nicht auf EXPLICIT stehen, da passiert nix.
Also wieder was gelernt und das Problem gelöst.
DANKE!
LG,
Tommi
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige