hier ist meine aktuellen Code:Excel VBA: Variablen auf 0 aus irgendeinem Grund das Zurücksetzen
Private Sub Workbook_Open()
sumn1 = Sheets("Main").Cells(1, 1).Value
sumn2 = Sheets("Main").Cells(2, 1).Value
sumn3 = Sheets("Main").Cells(3, 1).Value
sumn4 = Sheets("Main").Cells(1, 2).Value
sumn5 = Sheets("Main").Cells(2, 2).Value
sumn6 = Sheets("Main").Cells(3, 2).Value
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Sheets("Main").Cells(1, 1) = sumn1
Sheets("Main").Cells(2, 1) = sumn2
Sheets("Main").Cells(3, 1) = sumn3
Sheets("Main").Cells(1, 2) = sumn4
Sheets("Main").Cells(2, 2) = sumn5
Sheets("Main").Cells(3, 2) = sumn6
End Sub
So, während die Arbeitsmappe geöffnet ist, und es hat funktioniert, die in nach einigen Aktionen die Variablen sumn1, sumn2..etc. (das sind globale Variablen) erhalten addierte Werte, wie +10 zu sumn1 oder +5 zu sumn2 und so weiter. Da ich sie nach dem Schließen der Arbeitsmappe speichern möchte, speichere ich sie in einer Zelle, die ich mit ";;;" versteckt habe.
Das Problem ist, manchmal funktioniert es richtig, aber manchmal (in der Regel nach längerer Zeit seit Arbeitsmappe seit geschlossen wurde) zurückgesetzt die Variablen auf 0
Also zunächst ist mein Ansatz ein gut ein, wie ich Ich spare die Daten oder es funktioniert einfach nicht, weil dieser Ansatz schlecht ist? Wenn es ein guter Ansatz ist, dann sollte ich meinen Fehler woanders suchen.
Können Sie ein Arbeitsblatt als Speicheroption verwenden und nicht immer auf Variablen verweisen? Natürlich könnte diese Vorgehensweise die Leistung um einen kleinen Betrag verringern, aber es würde Ihnen eine viel konsistentere Erfahrung in Bezug auf die gespeicherten Werte geben. * edit *: Bathsheba schlägt mich dazu :) – jonifen
Hört sich an, als wäre dieses Code-Bit in einer Arbeitsmappe "A" und die Variablenwerte werden in einer anderen Arbeitsmappe "B" ohne diesen VBA-Code gespeichert. Ist es möglich, dass Ihre Arbeitsmappe "B" später ohne VBA der Arbeitsmappe "A" geöffnet wird und die Zelle mit der verschobenen Variable? Dann, wenn Sie die Arbeitsmappe "B" erneut öffnen, wurden einige andere Zellen mit anderen Werten an ihren Platz verschoben? –