80 Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (2.9k Punkte)
Hallo,

kann man Daten an einer bestimmten Stelle im Code zwischenspeichern, um sie beim nächsten Programmaufruf wieder abzurufen?

Gruß A.

4 Antworten

0 Punkte
Beantwortet von beverly_ Mitglied (535 Punkte)

Hi,

ja das kann man, indem man sie in Variablen zwischenspeichert. Aber sobald man dieselbe Prozedur erneut aufruft, werden die Daten überschrieben. Die Daten in einer anderen Prozedur weiterzuverwenden, ist dagegen problemlos möglich.

Sollen die Daten in einer Prozedur im selben Codemodul weiterverwendet werden, dann reicht es, wenn man sie in einer (oder mehreren) Variablen ablegt, wobei diese Variable(n) außerhalb aller Prozeduren deklariert werden kann/können. Z.B. Dim MeineVariable As Long

Sollen die Daten jedoch in anderen Codemodulen weiterverwendet werden, dann muss/müssen diese Variable(n) in einem Standardmodul und als Public deklariert werden. z.B. Public MeineVariable As Long

Bis später, Karin

0 Punkte
Beantwortet von ahorn38 Experte (2.9k Punkte)
Danke Karin für deine Antwort. So ganz klar komme ich aber noch nicht damit.

Konkret will ich in einem Code eine bestimmte Zeilennummer ablegen. Beim nächsten Aufruf dieses Codes will ich die Bearbeitung der Datei ab dieser Zeilennummer beginnen. Bisher habe ich die Zeilennummer immer irgendwo in der Datei "versteckt" und dann wieder ausgegraben. Jetzt wollte ich sie lieber im Code hinterlegen...

Gruß A.
0 Punkte
Beantwortet von beverly_ Mitglied (535 Punkte)

Hi,

da ich deinen Code nicht kenne, mal ein simples Beispiel: in einem Standardmodul ist die Variable lngZeile als Public-Variable deklariert:

Option Explicit
Public lngZeile As Long

Im Codemodul des Tabellenblattes steht folgender Code:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    MsgBox "letzte Zeile war " & lngZeile
    lngZeile = Target.Row
End Sub

Was soll der Code machen: bei Klick in eine Zelle wird eine MsgBox ausgegeben und darin soll die vorhergehende Zeilennummer angezeigt werden.

Was passiert: beim 1. Klick wird 0 ausgegeben, weil die Variable lngZeile noch nicht belegt ist. Bei jedem Klick in eine weitere Zelle wird die Zeile der vorhergehenden Zelle ausgegeben - mit anderen Worten: im Selection_Change-Ereignis wird nach Ausgabe der vorhergehenden Zeile die Zeile der angeklickten Zelle auf die Variable lngZeile geschrieben und steht beim nächsten Klick zur Verfügung.

Wenn du die Arbeitsmappe schließt und wieder öffnest, ist die Variable erstmal nicht belegt - falls du sie in dem Fall auch zwischenspeichern willst, sodass sie nach dem Öffnen belegt ist, dann müsstest du sie irgendwo in einem Tabellenblatt ablegen und nach dem Öffnen von dort zurücklesen, weil Variablen immer nur zur Laufzeit belegt sind.

Bis später, Karin

0 Punkte
Beantwortet von
Alles klar. Vielen Dank!

Gruß A.
...