Thema Datum  Von Nutzer Rating
Antwort
24.07.2012 15:08:25 Chris Joseph
NotSolved
24.07.2012 20:40:34 Till
NotSolved
25.07.2012 07:57:02 Chris Joseph
NotSolved
Blau UserForm nicht mehr anzeigen
25.07.2012 18:11:21 Till
NotSolved

Ansicht des Beitrags:
Von:
Till
Datum:
25.07.2012 18:11:21
Views:
962
Rating: Antwort:
  Ja
Thema:
UserForm nicht mehr anzeigen

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


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.07.2012 15:08:25 Chris Joseph
NotSolved
24.07.2012 20:40:34 Till
NotSolved
25.07.2012 07:57:02 Chris Joseph
NotSolved
Blau UserForm nicht mehr anzeigen
25.07.2012 18:11:21 Till
NotSolved