Office: Checkbox-Werte speichern

Helfe beim Thema Checkbox-Werte speichern in Microsoft Excel Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich habe eine Userform, die liegt ja unter "Formulare". Die Userform hat Checkboxen. Ich habe mich belesen, dass der Wert der... Dieses Thema im Forum "Microsoft Excel Hilfe" wurde erstellt von kurze Frage, 1. April 2012.

  1. Checkbox-Werte speichern


    Hallo zusammen,

    ich habe eine Userform, die liegt ja unter "Formulare".

    Die Userform hat Checkboxen. Ich habe mich belesen, dass der Wert der Checkboxen beim Schließen der Form und/oder Datei nur gemerkt werden kann, wenn ich ihn in der Tabelle zwischenspeicher und dann wieder einlesen.

    Ich habe also geschrieben:
    Code:
    Ich weiß aber einfach nicht wohin der muss, damit es funktioniert - im Modul passiert nix, im Code der UF auch nicht, in der Arbeitsmappe und im Code der entsprechenden Tabelle auch nicht :-(

    Wenn ich die private_sub mit F5 oder F8 ausführe, macht er garnichts mit der Checkbox, Wert in A1 schreiben oder so, sondern öffnet einfach nur die UF zentriert auf dem Bildschirm.

    Was mache ich da falsch?

    Außerdem habe ich 2 Commandbuttons, um die Userform mit show und hide ein- oder auszublenden. Müsste ich den obigen Code dann "je zweimal" mit activat und show und terminate und hide hinterlegen, so dass die Werte sowohl beim Schließen, als auch beim Ausblenden gemerkt und dann wieder gezeigt werden?

    Zwischen show und hide merkt er sich die Häkchen, beim schließen von Datei oder Userform aber nicht - darum der Code von oben, der aber nix tut :-(


    Danke schonmal!

    :)
     
    kurze Frage, 1. April 2012
    #1
  2. Hallo kurze Frage (eigenartiger Name!),

    ich löse das meist so.

    ' **********************************************************************
    ' Modul: UserForm1 Typ: Userform
    ' **********************************************************************

    Option Explicit

    Private Sub UserForm_Activate()
    CheckBox1 = GetCustProp("CheckBox1", True)
    CheckBox2 = GetCustProp("CheckBox2", False)
    End Sub

    Private Sub UserForm_Terminate()
    SetCustProp "CheckBox1", CheckBox1
    SetCustProp "CheckBox2", CheckBox2
    End Sub

    Private Function GetCustProp(propName As String, Optional propValue As Variant) As Variant
    ' Wert aus Dateieigenschaft auslesen. Wenn nicht vorhanden
    ' Anlegen und Optional mit Startwert belegen

    Dim propType As MsoDocProperties

    If Not IsMissing(propValue) Then
    Select Case VarType(propValue)
    Case vbString
    propType = msoPropertyTypeString
    Case vbBoolean
    propType = msoPropertyTypeBoolean
    Case vbByte, vbInteger, vbLong
    propType = msoPropertyTypeNumber
    Case vbSingle, vbDouble
    propType = msoPropertyTypeFloat
    Case vbDate
    propType = msoPropertyTypeDate
    Case Else
    End Select
    End If

    With ThisWorkbook
    On Error GoTo NoName
    GetCustProp = .CustomDocumentProperties(propName).Value
    Exit Function
    NoName:
    If Err.Number = 5 Then
    Err.Clear
    .CustomDocumentProperties.Add _
    Name:=propName, _
    LinkToContent:=False, _
    Type:=propType, _
    Value:=propValue
    GetCustProp = propValue
    End If
    End With
    End Function

    Private Function SetCustProp(propName As String, propValue As Variant)
    ' Wert in Dateieigenschaft schreiben. Wenn nicht vorhanden
    ' Anlegen und Wert eintragen

    Dim propType As MsoDocProperties

    Select Case VarType(propValue)
    Case vbString
    propType = msoPropertyTypeString
    Case vbBoolean
    propType = msoPropertyTypeBoolean
    Case vbByte, vbInteger, vbLong
    propType = msoPropertyTypeNumber
    Case vbSingle, vbDouble
    propType = msoPropertyTypeFloat
    Case vbDate
    propType = msoPropertyTypeDate
    Case Else
    End Select

    With ThisWorkbook
    On Error GoTo NoName
    .CustomDocumentProperties(propName).Value = propValue
    Exit Function
    NoName:
    If Err.Number = 5 Then
    Err.Clear
    .CustomDocumentProperties.Add _
    Name:=propName, _
    LinkToContent:=False, _
    Type:=propType, _
    Value:=propValue
    End If
    End With
    End Function





    « Gruß Sepp »
     
    josef e, 3. April 2012
    #2
  3. Hallo Sepp,

    leider krieg ich den Bezug zu meiner Frage nicht hergestellt - ich denke zwar nachzuvollziehen, was dein Code macht.. oder auch nicht --> warum ist get properties für check1 true und für check 2 false?
    Und was heißt... ich glaube, das ist mehr als ich wollte und folgen kann... msodocproperties - word? ich excel...

    Und warum über DokumentEigenschaft?
    Und wo müsste der Code hin? In "diese Arbeitsmappe"?

    Und: ich habe genau 24 Checkboxen, die beim Öffner der Datei noch die Werte vorm Schließen haben sollen... wie würde das eingebaut? Ich hätte meinen Code einfach entsprechend oft vervielfältig, wenn er denn funktionieren würde.

    Kannst du mir mehr erklären oder mir sagen, ob es nicht doch mit meinem Ansatz geht und sagen, wo der Fehler ist?

    Danke!
    Claudia
     
    kurze Frage, 3. April 2012
    #3
  4. Checkbox-Werte speichern

    Hallo Claudia, (hast also doch einen hübschen Namen!)

    der Code gehört, wie es auch am Anfang des Codes steht, in das Modul des UserFormulars. Bei meinem Code werden die Zustände der CheckBoxen in den Dokumenteigenschaften gespeichert. Das True/False bei "GetCustProp" gibt den Standardwert vor.

    Wenn du die Zustände in einer Tabelle speichern willst, dann geht das z. B. so.

    ' **********************************************************************
    ' Modul: UserForm1 Typ: Userform
    ' **********************************************************************

    Option Explicit

    Private Sub UserForm_Activate()
    Dim lngIndex As Long

    With Sheets("Tabelle1")
    For lngIndex = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
    If .Cells(lngIndex, 1) <> "" Then
    Me.Controls(.Cells(lngIndex, 1).Text) = .Cells(lngIndex, 2)
    End If
    Next
    End With
    End Sub

    Private Sub UserForm_Terminate()
    Dim objCntrl As Control
    Dim lngIndex As Long

    With Sheets("Tabelle1")
    For Each objCntrl In Me.Controls
    If (TypeOf objCntrl Is MSForms.CheckBox) Or (TypeOf objCntrl Is MSForms.OptionButton) Or (TypeOf objCntrl Is MSForms.TextBox) Then
    lngIndex = lngIndex + 1
    .Cells(lngIndex, 1) = objCntrl.Name
    .Cells(lngIndex, 2) = objCntrl.Value
    End If
    Next
    End With
    End Sub



    « Gruß Sepp »
     
    josef e, 3. April 2012
    #4
  5. Hallo Sepp,

    danke für die schnelle Antwort - wenn man einmal baut, will man ja auch weiter :-) und gleich Mitternacht...

    ich hab versucht, die Werte nicht in der gleichen Tabelle zu speichern in der die Userform liegt, weil ich die für Eingabewerte benutzen möchte, die Userform darauf eine Checkliste zum Abhaken ist - wenn ich aber im Code eine andere Tabelle angeben will, kommt "Laufzeitfehler, außerhalb des gültigen Bereichs" und es wird die Zeile mit with sheets ("Tabelle4") markiert - die gleiche Fehlermeldung mit dem Sprung an die gleiche Stelle bekomme ich auch, wenn ich meinen Button "show" drücke... der hide-Button geht.

    edit: anzeigen und ausblenden geht wieder - habe den Namen der Userform eingetragen (heißt nicht UserForm, sondern "Checkliste") --> aber es speichert nix beim schließen und schreibt auch nichts in die Tabelle :-( --> ist auch Quatsch, oder? activate und terminate sind bei dir oben nur Namen der subs, oder?
    edit2: oder liegt es daran, dass ich die UF mit "show" wieder aufrufe nach dem Schließen und nicht --mit "activate" - so dass es vielleicht speichert, aber ich es nicht richtig aufrufe?
    Wie könnte ich aber dann die Ein- und Ausblendfunktion beibehalten?

    Und würde dein Code "nur" die Werte speichern, wenn die UF geschlossen wird, oder auch wenn die Datei geschlossen wird und die UF die ganze Zeit "sichtbar" war und auch, wenn sie über den hide-Button ausgeblendet wird? Oder muss man den dann entsprechend vervielfältigen ?

    Danke!
     
    kurze Frage, 3. April 2012
    #5
  6. Hallo Claudia,

    ein UserFormular ist ein Objekt, das liegt nicht "auf oder in einer Tabelle".
    Auf welchem Tabellenblatt du die Werte speicherst ist doch vollkommen egal, so lange die entsprechende Tabelle vorhanden ist, also überprüfe nochmal den Tabellennamen.

    Und die Prozeduren heißen immer "UserForm_Activate" bzw. "UserForm_Terminate", egal welchen Namen dein UF trägt. Wenn du also die Namen änderst, dann kann nichts gespeichert werden, weil die entsprechenden Prozeduren dann ja nicht mehr vorhanden sind.

    Die Werte werden gespeichert, wenn die Datei gespeichert wird. Sie werden geschrieben, wenn das UF entladen wird und beim Laden werden sie gelesen.

    Bei UF.Hide brauchst du nichts machen, weil das UF ja nur ausgeblendet aber nicht entladen wird.





    « Gruß Sepp »
     
    josef e, 3. April 2012
    #6
  7. Phantastisch :-)

    Idiotensicher erklärt versteh ichs auch :-), kann zwar Code lesen, hab aber immer das Problem, dass mir die "Grundausbildung" fehlt, also die grundlegendene Gesetzmäßigkeiten - wann muss ich "Tabelle" mit der "Nummer" schreiben, wann den Blattnamen, was ist "allgemein", was blattbezogen etc. - hab zB erst vor kurzem "rausgefunden", dass Code im Modul aus jedem Blatt genutzt werden kann und eben nicht in jedes einzeln muss... wahnsinns Erkenntnis - wohl genau im Sinne des Erfinders, aber wenn man eben so nach und nach reinwächst und alles nur probiert, dann freut man sich erstmal nur, wenn was klappt und optimieren kommt immer später :-)

    Also: vielen Dank, ich habe den Tabellennamen verwendet und damit klappt es ausgezeichnet.

    Danke!
     
    kurze Frage, 3. April 2012
    #7
  8. Checkbox-Werte speichern

    Hallo Sepp,

    ich leider schon wieder...

    2 Fragen

    ich habe noch eine zweite Userform eingefügt.

    Deren Werte lese ich genauso aus wie aus der ersten:

    Code:
    mit dem Unterschied, dass die Werte in Spalte D und E geschrieben werden, damit sie sich mit der ersten nicht in die Quere kommen --> passiert auch beim Schließen der Userform.

    wenn ich das jetzt aber auslesen will, klappt das nicht :-(

    Laufzeitfehler, ungültiges Argument, diese Zeile gelb:
    Me.Controls(.Cells(lngIndex, 4).Text) = .Cells(lngIndex, 5)

    --> ich dachte damit gesagt zu haben, dass die Werte jetzt in Spalte 4 und 5 satt in 1 und 2 für Userform 1 stehen?


    Noch ein Problem:
    erst hatte ich 2 Buttons: einen für Show, einen für Hide. Wenn ich damit die Userform ein- und ausgeblendet habe, blieben die Werte erhalten, wenn ich sie über das rote X geschlossen habe, wurden die Werte in das Blatt "Userformwerte" geschrieben und beim wieder einblenden auch aktualisiert = alles war chic.

    Um es "schöner" zu machen, habe ich statt 2 Buttons einen toggle genommen - mit if value true=show, else hide --> also eigentlich das gleiche: ABER: nach Hide sind bei Show alle Werte weg :-(, auch für die Userform 1, wo ja speichern und auslesen klappt...

    Hast du einen Tipp für mich?

    Danke!
    Claudia
     
    kurze Frage, 5. April 2012
    #8
  9. Hallo Claudia,

    von der ferne schwer zu sagen, warum es hakt.

    Lade doch (d)eine Beispieldatei hoch.




    « Gruß Sepp »
     
    josef e, 5. April 2012
    #9
  10. ich hab es "anonymisiert" und angehangen... es hängt blöderweise irgendwie alles - "über active Steuerelement nicht möglich - dann kommts, dann kann man was eintragen, dann wieder Fehlermeldung, dann debugger, dann wieder nix mehr, nicht mal schließen.. und sogar "jump" für die Registerbuttons geht nicht mehr :-(


    was hab ich dann da verkehrt gemacht?

    Irgendwie fing "der Ärger" an, als ich auf die Toggles gewechselt hab...

    Danke schonmal!
     
    kurze Frage, 5. April 2012
    #10
  11. Hallo Claudia,

    du musst die Spalten schon überall im Code anpassen!






    « Gruß Sepp »
     
    josef e, 6. April 2012
    #11
  12. hab ich gemerkt, gemacht und geht wieder :-)

    Danke!
     
    kurze Frage, 6. April 2012
    #12
Thema:

Checkbox-Werte speichern

Die Seite wird geladen...
  1. Checkbox-Werte speichern - Similar Threads - Checkbox Werte speichern

  2. Ausblenden von Inhalten per Checkbox / wiederholen von Inhalten

    in Microsoft Word Hilfe
    Ausblenden von Inhalten per Checkbox / wiederholen von Inhalten: Hallo! Ich bin neu in der Community und hoffe auf Eure Unterstützung! Für meine Kollegen entwickle ich derzeit ein Formular, welches diverse Inhaltssteuerungselemente zum Ausfüllen enthält....
  3. Zeile kopieren nach Checkbox aktivierung

    in Microsoft Excel Hilfe
    Zeile kopieren nach Checkbox aktivierung: Hallo zusammen, ich bin totaler Neuling aber ich versuche gerade für die Arbeit ein Schichtprotokoll zu erstellen. Ansich ist es fertig. Aber ich habe in spalte J die Angabe das die Aufgabe noch...
  4. Wenn wert in Zelle dann Checkbox in Userform aktivieren

    in Microsoft Excel Hilfe
    Wenn wert in Zelle dann Checkbox in Userform aktivieren: Hi ZUsammen, habe ein kleines Problem. Ich habe z.B. im aktiven Blatt in den Zellen C201 bis C213 einen Wert stehen. Ich habe auch eine Userform mit 12 Checkboxen. Nun möchte ich, wenn ich die...
  5. Checkbox (Ja/nein feld) mit Datenbindung per VBA Wert zuweisen

    in Microsoft Access Hilfe
    Checkbox (Ja/nein feld) mit Datenbindung per VBA Wert zuweisen: Soderle, ich habe ein ganz kleines Problemchen: Ich will in einem Formular einer Checkbox (die ich verstecke, der Anwender soll davon nix mitbekommen), welche aber an eine Tabellenspalte gebunden...
  6. Checkbox aktivieren mit einem Wert

    in Microsoft Excel Hilfe
    Checkbox aktivieren mit einem Wert: Hallo zusammen, ich möchte gerne folgendes machen, wenn ich in einer Zeile einen Text eingebe (z.b. ein Name) geht das Kontrollkästchen vorne an. Steht da kein "Name" drin bleibt es leer und...
  7. Checkbox falscher Wert falls Makro abbricht

    in Microsoft Excel Hilfe
    Checkbox falscher Wert falls Makro abbricht: Hallo zusammen, bei mir geht es heute um folgendes: Ich habe eine Checkbox mit einem Makro, das bestimmte Zellen von kg/h in g/s umrechnet (*3,6 bzw. /3,6) und umgekehrt. Wenn es jetzt...
  8. Checkbox falscher Wert falls Makro abbricht

    in Microsoft Excel Hilfe
    Checkbox falscher Wert falls Makro abbricht: Hallo zusammen, bei mir geht es heute um folgendes: Ich habe eine Checkbox mit einem Makro, das bestimmte Zellen von kg/h in g/s umrechnet (*3,6 bzw. /3,6) und umgekehrt. Wenn es jetzt...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden