Meinews.de  


Zurück   Meinews.de > Forum > Newsgroups microsoft.public.de.* 1 Forum > Newsgroup microsoft.public.de.excel
Registrieren FAQ Benutzerliste Kalender Suchen Heutige Beiträge Alle Foren als gelesen markieren

Newsgroup microsoft.public.de.excel Forum microsoft.public.de.excel

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 02-22-2009, 04:38 PM
Willy Steffen
 
Beiträge: n/a
Standard Satic Variable

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
Mit Zitat antworten
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Meinews.de
Standard Sponsored Links

  #2  
Alt 02-22-2009, 05:35 PM
Eberhard Funke
 
Beiträge: n/a
Standard Re: Satic Variable

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
Mit Zitat antworten
  #3  
Alt 02-23-2009, 12:07 PM
Willy Steffen
 
Beiträge: n/a
Standard Re: Satic Variable

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
>

Mit Zitat antworten
  #4  
Alt 02-23-2009, 03:05 PM
Eberhard Funke
 
Beiträge: n/a
Standard Re: Satic Variable

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
Mit Zitat antworten
  #5  
Alt 02-28-2009, 04:54 PM
Willy Steffen
 
Beiträge: n/a
Standard Re: Satic Variable

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
>

Mit Zitat antworten
 
Antwort


Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen
Es ist dir nicht erlaubt, auf Beiträge zu antworten
Es ist dir nicht erlaubt, Anhänge anzufügen
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten

vB Code ist An
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus

Ä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


Alle Zeitangaben in WEZ. Es ist jetzt 09:18 PM Uhr.



Powered by: vBulletin Version 3.6.7 (Deutsch)
Copyright ©2000 - 2010, Jelsoft Enterprises Ltd.
Forum SEO by Zoints