PDA

Vollständige Version anzeigen : Checkbox-Werte speichern - Code wohin?


kurze Frage
03.04.2012, 20:51
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:
Private Sub Checkliste_Terminate()
If CheckBox1.Value = True Then
Sheets("Tabelle19").Range("A1") = "1"
ElseIf CheckBox1.Value = False Then
Sheets("Tabelle19").Range("A1") = "0"
End If
End Sub

Private Sub Checkliste_Activate()
If Sheets("Tabelle19").Range("A1") = "1" Then
CheckBox1.Value = True
ElseIf Sheets("Tabelle19").Range("A1") = "0" Then
CheckBox1.Value = False
End If
End Sub

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!

josef e
03.04.2012, 21:16
<div style="width:85%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo kurze Frage (eigenartiger Name!),

ich löse das meist so.

<div style="background-color:#F5F5F5; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:8pt ;" ><span style="color:#008000"; >' **********************************************************************</span><br /><span style="color:#008000"; >' Modul: UserForm1 Typ: Userform</span><br /><span style="color:#008000"; >' **********************************************************************</span><br /><br /><span style="color:#0000FF"; >Option</span> <span style="color:#0000FF"; >Explicit</span><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Sub</span> UserForm_Activate()</b><br />&nbsp;&nbsp;CheckBox1 = GetCustProp(<span style="color:#808080"; >"CheckBox1"</span>, <span style="color:#0000FF"; >True</span>)<br />&nbsp;&nbsp;CheckBox2 = GetCustProp(<span style="color:#808080"; >"CheckBox2"</span>, <span style="color:#0000FF"; >False</span>)<br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Sub</span> UserForm_Terminate()</b><br />&nbsp;&nbsp;SetCustProp <span style="color:#808080"; >"CheckBox1"</span>, CheckBox1<br />&nbsp;&nbsp;SetCustProp <span style="color:#808080"; >"CheckBox2"</span>, CheckBox2<br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Function</span> GetCustProp(propName <span style="color:#0000FF"; >As</span> String, <span style="color:#0000FF"; >Optional</span> propValue <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Variant</span>) <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Variant</span></b><br />&nbsp;&nbsp;<span style="color:#008000"; >' Wert aus Dateieigenschaft auslesen. Wenn nicht vorhanden</span><br />&nbsp;&nbsp;<span style="color:#008000"; >' Anlegen und Optional mit Startwert belegen</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> propType <span style="color:#0000FF"; >As</span> MsoDocProperties<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> <span style="color:#0000FF"; >Not</span> IsMissing(propValue) <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Select</span> <span style="color:#0000FF"; >Case</span> VarType(propValue)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbString<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeString<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbBoolean<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeBoolean<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbByte, vbInteger, vbLong<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeNumber<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbSingle, vbDouble<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeFloat<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbDate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeDate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> <span style="color:#0000FF"; >Else</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Select</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> ThisWorkbook<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >On</span> <span style="color:#0000FF"; >Error</span> <span style="color:#0000FF"; >GoTo</span> NoName<br />&nbsp;&nbsp;&nbsp;&nbsp;GetCustProp = .CustomDocumentProperties(propName).Value<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Exit</span> <span style="color:#0000FF"; >Function</span><br />&nbsp;&nbsp;&nbsp;&nbsp;NoName:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Err.Number = 5 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Err.Clear<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CustomDocumentProperties.Add _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name:=propName, _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LinkToContent:=False, _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type:=propType, _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value:=propValue<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GetCustProp = propValue<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Function</span></b><br /><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Function</span> SetCustProp(propName <span style="color:#0000FF"; >As</span> String, propValue <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Variant</span>)</b><br />&nbsp;&nbsp;<span style="color:#008000"; >' Wert in Dateieigenschaft schreiben. Wenn nicht vorhanden</span><br />&nbsp;&nbsp;<span style="color:#008000"; >' Anlegen und Wert eintragen</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> propType <span style="color:#0000FF"; >As</span> MsoDocProperties<br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Select</span> <span style="color:#0000FF"; >Case</span> VarType(propValue)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbString<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeString<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbBoolean<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeBoolean<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbByte, vbInteger, vbLong<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeNumber<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbSingle, vbDouble<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeFloat<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> vbDate<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;propType = msoPropertyTypeDate<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Case</span> <span style="color:#0000FF"; >Else</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Select</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> ThisWorkbook<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >On</span> <span style="color:#0000FF"; >Error</span> <span style="color:#0000FF"; >GoTo</span> NoName<br />&nbsp;&nbsp;&nbsp;&nbsp;.CustomDocumentProperties(propName).Value = propValue<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Exit</span> <span style="color:#0000FF"; >Function</span><br />&nbsp;&nbsp;&nbsp;&nbsp;NoName:<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> Err.Number = 5 <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Err.Clear<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.CustomDocumentProperties.Add _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Name:=propName, _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LinkToContent:=False, _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type:=propType, _<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value:=propValue<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Function</span></b><br /><br /></span></nobr></div>


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

kurze Frage
03.04.2012, 21:41
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

josef e
03.04.2012, 22:02
<div style="width:95%; margin-left:5px; margin-right:15px; text-align:justify;">
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.

<div style="background-color:#F5F5F5; border-width:2px; border-style: groove; border-color:#ff9966; padding:4px;"><nobr><span style="font-family:Courier New,Arial; font-size:8pt ;" ><span style="color:#008000"; >' **********************************************************************</span><br /><span style="color:#008000"; >' Modul: UserForm1 Typ: Userform</span><br /><span style="color:#008000"; >' **********************************************************************</span><br /><br /><span style="color:#0000FF"; >Option</span> <span style="color:#0000FF"; >Explicit</span><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Sub</span> UserForm_Activate()</b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> lngIndex <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Long</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> Sheets(<span style="color:#808080"; >"Tabelle1"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> lngIndex = 1 <span style="color:#0000FF"; >To</span> .Cells(.Rows.Count, 1).End(xlUp).Row<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> .Cells(lngIndex, 1) &lt;&gt; "" <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Me.Controls(.Cells(lngIndex, 1).Text) = .Cells(lngIndex, 2)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /><br /><b><span style="color:#0000FF"; >Private</span> <span style="color:#0000FF"; >Sub</span> UserForm_Terminate()</b><br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> objCntrl <span style="color:#0000FF"; >As</span> Control<br />&nbsp;&nbsp;<span style="color:#0000FF"; >Dim</span> lngIndex <span style="color:#0000FF"; >As</span> <span style="color:#0000FF"; >Long</span><br />&nbsp;&nbsp;<br />&nbsp;&nbsp;<span style="color:#0000FF"; >With</span> Sheets(<span style="color:#808080"; >"Tabelle1"</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >For</span> Each objCntrl In Me.Controls<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >If</span> (TypeOf objCntrl <span style="color:#0000FF"; >Is</span> MSForms.CheckBox) <span style="color:#0000FF"; >Or</span> (TypeOf objCntrl <span style="color:#0000FF"; >Is</span> MSForms.OptionButton) <span style="color:#0000FF"; >Or</span> (TypeOf objCntrl <span style="color:#0000FF"; >Is</span> MSForms.TextBox) <span style="color:#0000FF"; >Then</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;lngIndex = lngIndex + 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Cells(lngIndex, 1) = objCntrl.Name<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.Cells(lngIndex, 2) = objCntrl.Value<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >If</span><br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color:#0000FF"; >Next</span><br />&nbsp;&nbsp;<span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >With</span><br /><b><span style="color:#0000FF"; >End</span> <span style="color:#0000FF"; >Sub</span></b><br /><br /></span></nobr></div>
</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

kurze Frage
03.04.2012, 22:48
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!

josef e
03.04.2012, 23:12
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
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.



</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

kurze Frage
04.04.2012, 08:04
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
05.04.2012, 13:31
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:

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

With Sheets("Userformwerte")
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, 4) = objCntrl.Name
.Cells(lngIndex, 5) = objCntrl.Value
End If
Next
End With
End Sub


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

josef e
05.04.2012, 18:09
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Claudia,

von der ferne schwer zu sagen, warum es hakt.

Lade doch (d)eine Beispieldatei hoch.


</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

kurze Frage
05.04.2012, 21:37
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!

josef e
06.04.2012, 18:54
<div style="width:98%; margin-left:5px; margin-right:15px; text-align:justify;">
Hallo Claudia,

du musst die Spalten schon überall im Code anpassen!




</div>

<div style="width:100px; text-align:center; color:white; font-style:italic; font-size:0.8em; font-family:Tahoma; background-color:royalblue;margin-left:5px; margin-top:15px; padding:4px; border:3px double darkblue;">&laquo; Gru&szlig; Sepp &raquo;</div>

kurze Frage
06.04.2012, 22:03
hab ich gemerkt, gemacht und geht wieder :-)

Danke!