![]() |
|
|||||||
| Newsgroup microsoft.public.de.excel Forum microsoft.public.de.excel |
![]() |
|
|
Themen-Optionen | Ansicht |
|
#1
|
|||
|
|||
|
Hallo Alle
Ich habe nun eine Anwendung gemacht bei der es einige Module hat. Nun möchte ich eine Statusabfrage machen, bei der eine Variable *Status" abgefragt wird. Nun habe ich gedacht dass es mit der Definition Static Status As Byte Status = 1 reicht den Wert in einem SUB-Aufruf dann zu verwerten. Nun Leider funktioniert es nicht. Gibt es eine Möglichkeit in Excel, dass eine statische Variable in der aktuellen Mappe in irgendeinem SUB-Programm aufgerufen werden kann? Ich danke schon im Vorraus für Eure Hilfe Willy |
|
|
||||
|
||||
|
|
|
#2
|
|||
|
|||
|
Am Sun, 22 Feb 2009 08:38:01 -0800 schrieb Willy Steffen:
> Ich habe nun eine Anwendung gemacht bei der es einige Module hat. Nun möchte > ich eine Statusabfrage machen, bei der eine Variable *Status" abgefragt wird. > Nun habe ich gedacht dass es mit der Definition > Static Status As Byte > Status = 1 > reicht den Wert in einem SUB-Aufruf dann zu verwerten. Nun Leider > funktioniert es nicht. > Gibt es eine Möglichkeit in Excel, dass eine statische Variable in der > aktuellen Mappe in irgendeinem SUB-Programm aufgerufen werden kann? Hallo Willy, sieh mal in der Hilfe unter Static-Anweisung und unter Public-Anweisung nach. Vielleicht hilft das hier weiter (Status_setzen mehrfach aufrufen und dabei den Direktbereich beobachten): Option Explicit Public Status as Byte Sub Status_setzen() Status = Status + 1 Status_anzeigen End Sub Sub Status_anzeigen() Debug.Print Status; End Sub -- Mit freundlichen Grüssen Eberhard XP home XL 2000 Eberhard(punkt)W(punkt)Funke(at)t-online.de |
|
#3
|
|||
|
|||
|
Hallo Eberhard
Vielen Dank für die Hinweise, es geht in diese Richtung aber doch nicht ganz. Ich Denke, dass ich mit Static nicht weiterkomme, habe dann gedacht es gehe mit Constant aber das scheint es auch nicht zu sein. Ich habe wiefolgt den Code strukuriert: Im Modul Blattschutz Option Explicit Public Const Status As Integer = 0 <== muss sein sonst ist der Satz rot im 1ten sub Public Sub Blattschutz_Nein() Const Status = 1 'Ereignisse unterdrücken Application.EnableEvents = False 'Blattschutz wird entfernt ActiveSheet.Unprotect ("abc") 'automatische Bildschirm Auffrischung wird ausgeschaltet Application.ScreenUpdating = False 'automatische Berechnung wird ausgeschaltet Application.Calculation = xlCalculationManual Debug.Print "SchutzNein"; Status <== Wert ist OK End Sub im 2ten Public Sub Blattschutz_Ja() 'automatische Berechnung wird eingeschaltet Application.Calculation = xlCalculationAutomatic 'automatische Bildschirm Auffrischung wird ausgeschaltet Application.ScreenUpdating = True 'Blattschutz wird aktiviert ActiveSheet.Protect ("abc") 'Ereignisse wieder Erlauben Application.EnableEvents = True Const Status = 2 Debug.Print "SchutzJa"; Status <== Wert ist OK End Sub Jetzt im Private Sub Worksheet_Change(ByVal Target As Range) etc etc 'Erstellen des Ganttbalkens Worksheets(1).Range(Cells(AktiveZeile, AKWJ), _ Cells(AktiveZeile, EKWJ)).Interior.ColorIndex = 35 Debug.Print "Gantt"; Status <== sollte 1 sein ist aber 0 etc etc 'Blattschutz, Bildschirm, Events, Rechnen aktivieren Call Blattschutz.Blattschutz_Ja Debug.Print "Beendet"; Status <== sollte 2 sein ist aber 0 Frage: Gibt es einen Variablentyp dessen letzten Wert in der Arbeitsmappe erhalten bleibt? D.h über die Module und Tabellenblätter? Kannst Du oder jemand hier helfen? Vielen Dank im Voraus Willy "Eberhard Funke" schrieb: > Am Sun, 22 Feb 2009 08:38:01 -0800 schrieb Willy Steffen: > > > Ich habe nun eine Anwendung gemacht bei der es einige Module hat. Nun möchte > > ich eine Statusabfrage machen, bei der eine Variable *Status" abgefragt wird. > > Nun habe ich gedacht dass es mit der Definition > > Static Status As Byte > > Status = 1 > > reicht den Wert in einem SUB-Aufruf dann zu verwerten. Nun Leider > > funktioniert es nicht. > > Gibt es eine Möglichkeit in Excel, dass eine statische Variable in der > > aktuellen Mappe in irgendeinem SUB-Programm aufgerufen werden kann? > > > Hallo Willy, > > sieh mal in der Hilfe unter Static-Anweisung und unter Public-Anweisung > nach. > > Vielleicht hilft das hier weiter (Status_setzen mehrfach aufrufen und dabei > den Direktbereich beobachten): > > Option Explicit > Public Status as Byte > > Sub Status_setzen() > Status = Status + 1 > Status_anzeigen > End Sub > > Sub Status_anzeigen() > Debug.Print Status; > End Sub > > -- > Mit freundlichen Grüssen Eberhard > XP home XL 2000 > Eberhard(punkt)W(punkt)Funke(at)t-online.de > |
|
#4
|
|||
|
|||
|
Am Mon, 23 Feb 2009 04:07:01 -0800 schrieb Willy Steffen:
Hallo Willy, wenn ich Dein Vorhaben richtig verstehe, dann 1. Ausgangssituation: Blattschutz ist aktiviert 2. *manueller* Start von Blattschutz_Nein --> Blattschutz aufgehoben 3. Worksheet_Change auslösen, Gantt zeichen und --> Blattschutz_Ja Um 3. auszulösen, darf in 2. kein EnableEvents = False stehen. Ich habe die Makros auf das Wesentliche verkürzt (es geht ja hier um "Status"): In ein "normales Modul": Option Explicit Public Status As Integer Public Sub Blattschutz_Nein() Status = 1 ActiveSheet.Unprotect ("abc") Debug.Print "SchutzNein"; Status End Sub Public Sub Blattschutz_Ja() ActiveSheet.Protect ("abc") Status = 2 Debug.Print "SchutzJa"; Status End Sub -------------------------------- In das Modul des Tabellenblattes: Private Sub Worksheet_Change(ByVal Target As Range) '*** angenommene Werte ***: Dim AKWJ As Integer, EKWJ As Integer AKWJ = 2: EKWJ = 5 '************************** 'Erstellen des Ganttbalkens Worksheets(1).Range(Cells(Target.Row, AKWJ), _ Cells(Target.Row, EKWJ)).Interior.ColorIndex = 35 Debug.Print "Gantt"; Status 'Blattschutz aktivieren Call Blattschutz_Ja Debug.Print "Beendet"; Status 'Wenn Du den Status weiterhin brauchst, dann die beiden 'folgenden Zeilen löschen Status = 0 Debug.Print "Status zurückgesetzt "; Status End Sub HTH -- Mit freundlichen Grüssen Eberhard XP home XL 2000 Eberhard(punkt)W(punkt)Funke(at)t-online.de |
|
#5
|
|||
|
|||
|
Hallo Eberhard
Hat ein bisschen gedauert aber ich habe Dein Vorschlag eingesetzt und es funktioniert bestens. Vielen Dank Bis zum Nächstenmal Willy "Eberhard Funke" schrieb: > Am Mon, 23 Feb 2009 04:07:01 -0800 schrieb Willy Steffen: > > Hallo Willy, > > wenn ich Dein Vorhaben richtig verstehe, dann > 1. Ausgangssituation: Blattschutz ist aktiviert > 2. *manueller* Start von Blattschutz_Nein --> Blattschutz aufgehoben > 3. Worksheet_Change auslösen, Gantt zeichen und --> Blattschutz_Ja > > Um 3. auszulösen, darf in 2. kein EnableEvents = False stehen. > > Ich habe die Makros auf das Wesentliche verkürzt (es geht ja hier um > "Status"): > > In ein "normales Modul": > > Option Explicit > Public Status As Integer > > Public Sub Blattschutz_Nein() > Status = 1 > ActiveSheet.Unprotect ("abc") > Debug.Print "SchutzNein"; Status > End Sub > > Public Sub Blattschutz_Ja() > ActiveSheet.Protect ("abc") > Status = 2 > Debug.Print "SchutzJa"; Status > End Sub > > -------------------------------- > > In das Modul des Tabellenblattes: > > Private Sub Worksheet_Change(ByVal Target As Range) > '*** angenommene Werte ***: > Dim AKWJ As Integer, EKWJ As Integer > AKWJ = 2: EKWJ = 5 > '************************** > 'Erstellen des Ganttbalkens > Worksheets(1).Range(Cells(Target.Row, AKWJ), _ > Cells(Target.Row, EKWJ)).Interior.ColorIndex = 35 > Debug.Print "Gantt"; Status > 'Blattschutz aktivieren > Call Blattschutz_Ja > Debug.Print "Beendet"; Status > 'Wenn Du den Status weiterhin brauchst, dann die beiden > 'folgenden Zeilen löschen > Status = 0 > Debug.Print "Status zurückgesetzt "; Status > End Sub > > > HTH > -- > Mit freundlichen Grüssen Eberhard > XP home XL 2000 > Eberhard(punkt)W(punkt)Funke(at)t-online.de > |
|
|
|
|
![]() |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
| bash: Array Variable in anderer Variable speichern | Michael Schmarck | Newsgroup de.comp.os.unix.shell | 6 | 09-08-2008 06:55 PM |
| OUT or INOUT argument 2 for routine verwaltung.test is not a variable or NEW pseudo-variable in BEFORE trigger | Stephan Menzel | Newsgroup de.comp.datenbanken.mysql | 1 | 08-18-2008 09:53 AM |
| OUT or INOUT argument 2 for routine verwaltung.test is not a variable or NEW pseudo-variable in BEFORE trigger | Stephan Menzel | Newsgroup microsoft.public.de.access | 2 | 08-18-2008 09:49 AM |
| nochmal variable als variable | Mathias Fiedler | Newsgroup de.comp.lang.php.misc | 5 | 05-18-2008 09:17 PM |
| wget aktzeptiert http_proxy nicht, wenn die Variable über eine andere Variable initialisiert wurde. | Pedro Santos | Newsgroup de.comp.os.unix.shell | 16 | 03-22-2008 06:21 PM |