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

Statische Variable

Statische Variable
01.03.2004 17:45:45
Benjamin
Hallo,
habe folgendes Problem. Ich habe eine statische Funktion Oldvalue die mir einen Wert eines Feldes speichert. Nun verliert diese Variable aber ihren wert wenn ich ein worksheet mit 2 commandbuttons darauf lösche (und somit nicht mehr in den Debugmodus komme). Lösche ich das sheet nicht behält die Variable auch ihren wert.
Der Code sieht folgendermaßen aus:
'Code der die statische Variable speichert und wenn ohne Argument aufgerufen
'den Wert zurückgibt
Public Static Function oldValue(Optional Target As Range) As String
Static oldVal As String
If Not Target Is Nothing Then
If Target.Cells.Count = 1 Then
oldVal = Target.Value
End If
End If
oldValue = oldVal
End Function


Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Row <= 2 And Target.Column = 1) Then
Worksheets(toCountSheet).Copy before:=Sheets(1)
Worksheets(1).name = shtName
Worksheets(1).Move after:=Sheets(Sheets.count)
'Hier folgen Berechnungen
Application.DisplayAlerts = False
Worksheets(shtName).Delete
Application.DisplayAlerts = True
Worksheets(target.parent.name).Activate
Call oldValue(Target)
End If
End Sub

Nach dem delete wird zwar nochmals oldvalue aufgerufen und der wert gespeichert, aber frägt man den wert dach der Sub Worksheet_Change() nochmals ab ist er empty. Ohne ein löschen des sheets bleibt der Wert erhalten. Ich denke es liegt daran, dass auf dem sheet 2 commandbuttons sich befinden, denn wenn man ein sheet zum testen ohne buttons nimmt, funktioniert es aquch wunderbar.
Kann mir da jemand helfen? Danke.
Gruß
Benjamin

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Statische Variable
01.03.2004 19:34:25
Alex K.
Hallo Benjamin,
ich gehe mal davon aus, dass die Funktion "OldValue" in einem Modul.
Ersteinmal ein Hinweis, du hast sowohl die Funktion als auch die Variable als Static definiert. Dies ist nicht nötig. Wenn du eine Funktion als Static deklarierst, werden alle lokalen Variablen als Static angesehen. Wenn du dagegen in einer "normalen" Funktion eine Variable als Static deklarierst, so wird nur diese Variable als Static angesehen und du kannst andere Variablen als normale Prozedurvariablen definieren.
Ich würde mal testen, das ganze über eine modulglobale Variable zu machen. Also die beiden "Static" Anweisungen in deiner Funktion oldValue herausnehmen und dann im Modulkopf über
Public oldVal As String
eine modulglobale Variable definieren.
Noch eine Frage, bist du sicher, dass du beim Aufruf deiner Funktion nicht der if-Zweig zum Setzen der Variabel oldVal durchlaufen wird?
Anzeige
AW: Statische Variable
02.03.2004 10:16:25
Benjamin
Hallo Alex,
habe es jetzt mal über public Variable probiert und das Static herausgenommen. Hat aber auch nichts bewirkt. Der Fehler muss irgendwie durch das löschen der Sheets mit den Commandbuttons passieren, das dabei / danach excel irgendwie was mit seinem Speicher durcheinander bringt. Weil ohne löschen des Sheets bleibt der Wert gesetzt.
Also ich habe langsam keine Ahnung mehr woran es liegen kann. Vielleicht hast du ja noch eine Idee??
Gruß
Benjamin

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige