Anzeige
Archiv - Navigation
824to828
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
824to828
824to828
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Anfängerfrage: Deklaration Makro-übergreifend

Anfängerfrage: Deklaration Makro-übergreifend
05.12.2006 16:16:26
Anton
Hallo Leute,
sub
...
Veränderungsdatei = ActiveWorkbook.Name
...
end sub
Ich möchte Inhalte von verschiedenen Dateien zusammentragen und behandeln.
würde ich alles in ein Makro quetschen, hätte ich kein Problem.
Um nicht bei Fehlern total aufgeschmissen zu sein teile ich meinen Code auf mehrere Makros in mehreren Modulen auf.
Wie muß ich die Datei deklarieren, um in allen Makros darauf zugreifen zu können?
Mein Dank geht schon jetzt in Eure Richtung,
Servus,
Anton

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Anfängerfrage: Deklaration Makro-übergreifend
05.12.2006 16:22:29
Matthias
Hallo Anton,
eine globale Variable definierst du außerhalb der Prozeduren:



Option Explicit
Dim Veränderungsdatei As String
Sub Setzen()
Veränderungsdatei = ThisWorkbook.Name
End Sub
Sub Test()
Call Setzen
MsgBox Veränderungsdatei
End Sub

Besser wäre es aber, mit Argumenten zu arbeiten. Zu viele globale Variablen vernichten die Übersicht:

Sub Makro1(Datei As String)
MsgBox Datei
End Sub
Sub Test()
Dim Veränderungsdatei As String
Veränderungsdatei = ThisWorkbook.Name
Call Makro1(Veränderungsdatei)
End Sub

Gruß Matthias
Anzeige
AW: Anfängerfrage: Deklaration Makro-übergreifend
05.12.2006 16:32:18
Anton
Hallo Matthias,
wenn ich Dich richtig verstanden habe, genügt es vor das Makro "Option Explicit" zu setzen.
Deine Ausführungen zu Argumenten habe ich leider nicht verstanden.
Kannst Du es bitte kommentieren?
Danke,
Servus,
Anton
AW: Anfängerfrage: Deklaration Makro-übergreifend
05.12.2006 16:41:27
Matthias
Hallo Anton,
Äh, nein, "Option Explicit" bewirkt nur, dass Variablen deklariert werden müssen, man sie also nicht einfach im Code verwenden kann.
Das mit den Argumenten ist eigentlich Programmier-Basiswissen, das kann man sich im Forum nicht mit einer Frage aneignen...
Jedenfalls wird beim Aufruf des Makros "Makro1" die Variable "Veränderungsdatei" als Argument mitgegeben. In Makro1 heißt dieses Argument dann im Beispiel "Datei" und kann darüber auch angesprochen werden.
Gruß Matthias
Anzeige
AW: Anfängerfrage: Deklaration Makro-übergreifend
05.12.2006 16:54:53
Anton
Hallo Matthias,
da hast Du bei mir den Nagel auf den Kopf getroffen...
Was sich aufzeichnen lässt, kriege ich auch hin.
Den Rest muss ich experimentieren.
Ich möchte halt meine ungefähr 5 Dateien händeln.
Um nicht in temporären Dateien zu ersaufen,
will ich erst speichern wenn die entsprechende Datei fertig ist.
Mit "Veränderungsdatei = ActiveWorkbook.Name"
Workbooks(Veränderungsdatei).Activate
Worksheets("Tabelle2").Activate
kann ich das ganz gut.
Nur im nächsten Macro ist damit schluß.
Was muss ich also anstellen damit auch im nächsten Modul funzt?
Nochmals Dank,
Servus,
Anton
Anzeige
AW: Anfängerfrage: Deklaration Makro-übergreifend
05.12.2006 17:03:01
Matthias
Hallo Anton,
poste doch mal dein Makro und was es machen soll.
Gruß Matthias
Lösung gefunden
06.12.2006 11:47:41
Anton
Hallo Matthias,
hallo Interessierte,
ich habe einwenig im Internet gestöbert und eine erstklassige Lösung gefunden:
Erstmal Danke an Jörg Lorenz für seinen Artikel:
http://www.vba-beispiele.de/office.php?was=1103&PHPSESSID=7139107161729a4d80e92946851a780b
Servus,
Euer Anton
Hier der von mir gesuchte Ausschnitt:
Verfügbarkeit von Variablen
Wird eine Variable innerhalb einer Prozedur deklariert, kann nur der Code innerhalb dieser Prozedur auf den Wert zugreifen oder ändern. Manchmal soll die Variable in allen Prozeduren oder in allen Prozeduren in einer Arbeitsmappe zur Verfügung stehen. Die Art der Verfügbarkeit einer Variablen wird bei der Deklaration festgelegt. Es gibt drei mögliche Gültigkeitsbereiche für eine Variable:
* Innerhalb einer Prozedur Dim - Lokal
* Am Anfang des Modules Dim oder Private - Modulebene
* Am Anfang des Moduls Public - Öffentlich
Lokal
Die Variable wird nur innerhalb der umgebenen Prozedur erkannt und eignet sich für temporäre Berechnungen. Wird ein Variablen-Name in mehreren Prozeduren benutzt, ist die Variable nur lokal gültig. Gleiche Variablen-Namen in anderen Prozeduren bleiben unverändert vom Wert. Jede Prozedur erkennt nur ihre eigene Variablen.

Sub Test()
Dim MeineVariable (Lokale Variable)
End Sub


Sub Test2()
Dim MeineVariable
'(Lokale Variable mit gleichem Namen wie in Prozedur Test,
'entspricht nicht der Variablen von Prozedur Test)
End Sub

Modulebene
Variable auf Modulebene haben aus allen Prozeduren innerhalb eines Moduls Gültigkeit. Prozeduren aus anderen Modulen haben keine Gültigkeit.
Dim MeineVariable (Variable auf Modulebene)
Private MeineVariable1

Sub Test()
End Sub
Öffentlich
Variablen, die mit Public deklariert wurden, haben die umfassendste Gültigkeit. Öffentliche Variablen stehen jeder Prozedur, die sich in einem beliebigen Modul der jeweiligen Arbeitsmappe befinden kann, zur Verfügung. Öffentliche Variablen werden genau wie Variablen auf Modulebene vor den Prozedurdefinitionen deklariert.
Public MeineVariable Öffentliche Variable
Public MeineVariable1

Sub Test()
End Sub

Autor: Jörg Lorenz
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige