Naja, eine Variable in eine Zelle zu schreiben ist doch wirklich einfach:
Sheets("Tabelle1").cells(1,1).value=variable1
Ich hab mal eine kleine Klasse geschrieben die das ganze etwas besser organisiert:
Option Explicit
Const ShName As String = "Variables"
Dim WS As Worksheet
Public Var1 As String
Public Var2 As Double
Private Sub Class_Initialize()
Dim x As Worksheet
Dim Exists As Boolean
For Each x In ThisWorkbook.Worksheets
If x.Name = ShName Then
Exists = True
Exit For
End If
Next
If Exists Then
Set WS = Sheets(ShName)
LoadVariables
Else
Set WS = Sheets.Add
WS.Name = ShName
End If
End Sub
Private Sub Class_Terminate()
SaveVariables
End Sub
Public Property Let PropVar1(value As String)
WS.Cells(1, 1).value = value
End Property
Public Property Let PropVar2(value As String)
WS.Cells(2, 1).value = value
End Property
Public Property Get PropVar1() As String
PropVar1 = WS.Cells(1, 1).value
End Property
Public Property Get PropVar2() As String
PropVar2 = WS.Cells(2, 1).value
End Property
Public Property Let SheetVisible(value As XlSheetVisibility)
WS.Visible = value
End Property
Public Sub LoadVariables()
With WS
Var1 = .Cells(1, 1).value
Var2 = .Cells(2, 1).value
End With
End Sub
Public Sub SaveVariables()
With WS
.Cells(1, 1).value = Var1
.Cells(2, 1).value = Var2
End With
End Sub
(muss in ein Klassenmodul namens "MySettings" kopiert werden)
Benutzen kannst du das dann so:
Private Sub test()
Dim ms As New MySettings
ms.Var1 = 3
MsgBox ms.Var1
End Sub
Die Variablen werden dann immer geladen, wenn die Klasse kreiert wird bzw. gespeichert bevor die Klasse zerstört wird.
Alternativ kannst du die Prozeduren SaveVariables und LoadVariables verwenden, um "manuell" zu speichern/laden ohne das Klassenobject neu zu erstellen bzw zu zerstören.
Um das Programm stabiler zu machen kann es sinnvoll sein über Properties bei jedem Speichern die Variablen ins Tabellenblatt zu schreiben (Falls ein Fehler auftritt bleiben die letzten Werte trotzdem erhalten). Das kostet aber bei vielen aufrufen (in einer Schleife) aber weit mehr Resourcen.
Also schreiben/lesen über propvarX = sicher, lesen/schreiben über varX = schnell
Weitere Variablen/Properties (Eigenschaften), müsstest du dann im Klassenmodul hinzufügen/umbennen.
Gruß
Till
|