Excel VBA Kontrollkästchen soll Wert auslsesn und setzten

Registriert
Juni 2016
Beiträge
2
Hallo zusammen,

ich lese mit einer Userform Werte aus meiner Tabelle aus die dann in der Form geändert, gespeichert und gelöscht werden können.

Das gleiche möchte ich mit einem Kontrollkästchen in der Userform machen, dem Kästchen ein definiertes Feld zuweisen, dieses soll ausgelesen werden und wenn der Wert 1 ist soll das Kästchen bestätigt aufgerufen werden, wenn das feld in der Userform von leer auf bestätigt angeklickt wird soll beim speichern der Wert 1 hinterlegt werden.

Wie muss ich das in die drei Schritte einbetten damit es immer funktioniert? Hier die drei Schritte mit der ersten Zelle als Beispiel.

auslesen:
Private Sub UserForm_Initialize()
TextBox1 = Cells(zeile, 1)
End Sub

löschen:
Private Sub CommandButton1_Click()
TextBox1 = ""
End Sub

speichern:
Private Sub CommandButton2_Click()
If TextBox1 = "" Then
Sheets(1).Rows(zeile).Delete
End If
Cells(zeile, 1) = TextBox1.Value
End Sub
 
Hallo Garfield Gates,

Das lässt sich sicherlich sehr elegant mit VBA lösen; doch dazu müsste ein Bildschirmabdruck vorliegen. Wie wäre es, wenn Du einen Screenshot nachlieferst?
 
Ich verstehe die Aufgabe nicht. Auch weil mich UserForms schon mal ziemliche geärgert haben…

Das gleiche möchte ich mit einem Kontrollkästchen in der Userform machen,
1. Falle: die UserForm muss geladen und initialisiert sein (bzw. werden). Dabei kann ich durchaus eine bestimmte Zelle auswerten und (8-ung #2, die evtl. Click-Makros des Häkchens [Kontrollkästchens] müssen unter Kontrolle gebracht sein!) dann den Wert des Häkchens setzen

dem Kästchen ein definiertes Feld zuweisen,
Feld meint eine Zelle?!

dieses soll ausgelesen werden und wenn der Wert 1 ist soll das Kästchen bestätigt aufgerufen werden,
Das mit dem Auslesen verstehe ich noch, aber der zweite Teil ist unklar. Angenommen, die angenommene Zelle ist 1 (oder «Wahr») dann setze ich das Häkchen. Und mit diesem Schritt soll auch das ausgelöst werden was ausgelöst wird würde ich das Kontrollkästchen in der aktiven UserForm selbst setzen?

wenn das feld in der Userform von leer auf bestätigt angeklickt wird soll beim speichern der Wert 1 hinterlegt werden.
Setze ich das Häkchen soll sein alter ego in der oben angenommene Zelle auch auf «Wahr» oder 1 gesetzt werden? OK, kein Thema. Denk aber dran beim Löschen des Häckchens das auf Null zu setzen ;)

Denke also an das Kernproblem von UserForms: »schalte« ich ein Element der UserForm in einem Makro [= durch ein Makro] (ob nun durch andere Elemente oder gewöhnliche Makros) reagiert das Element so als wäre es ganz normal vom User bedient worden. Da lösen sich ggf. Dominoeffekte aus oder gehen Sachen los die man gar nicht haben will. Application.EnableEvents ist eine mögliches Kontrollinstrument.
Du musst beim Aktivieren der Form im zugehörigen Codeblock die gewünschte Voreinstellung auslesen. Dumm ist, wenn die Form nicht (durch-)initilaisiert ist Elemente von ihr ausgelöst werden, das gibt Durcheinander. Siehe meine Einleitung.

CN8
 
Die Excel Datei ist eine Kundentabelle mit verschiedenen Daten. Adressen, Kontaktdaten und Notizen habe ich durch die aktuelle Form gut hinbekommen, ... die Daten werden nach der Suche über die Kunden-ID in die Userform geladen, ... können geändert oder gelöscht werden und man kann das ganze dann speichern.
Excel Übersicht.png
Suche.png

Hier die Userform
Kontrollkästchen.png
Die Kontrollkästchen im linken unteren Teil könnte ich mit meiner aktuellen Variante auch einfach mit Textboxen in die 1 oder 0 oder nichts eingetragen wird abbilden, ... das ist aber nicht sehr Benutzerfreundlich und sieht auch nicht so schön aus. Deshalb die Idee mit den Kästchen. Es hängt keine Funktionalität dahinter, das einzige was ich will ist das Kästchen (wie eine Textbox) mit einer Zelle zu verbinden, wenn beim initialisieren der eine Wert in der Zelle steht soll das Kästchen angehakt(true) sein und wenn ein anderer Wert drin steht(oder halt keiner(mir egal wie) dann soll es nicht gehackt sein. Dann muss ich beim löschen das löschen der Zelle mit einfügen und beim speichern muss die Zelle mit dem neuen (geänderten oder nicht geänderten) Wert überschrieben werden, so wie ich es jetzt auch schon mit den Textboxen mache.

Es ist also nur eine reine Informationszusammenführung, ich hoffe ihr wisst jetzt wie ich das meine, wie gesagt, wenn ich die Kästchen mit ner Textbox ersetzte in die ich 1 oder x eintrage dann könnte ich das jetzt auch schon abbilden, ist halt aber mit Kästchen hübscher :-)
Ergänzung ()

hier noch mal die vba screens

Variable
variable.png

suchen
suchen.png

initialisieren
initialisierung.png

löschen
löschen 1.png

speichern
speichern.png
Ergänzung ()

ich glaub ich habs hinbekommen, ... müsste so gehen oder?

beim initialisieren
If Cells(zeile, 30) = 1 Then CheckBox1 = True

beim löschen
CheckBox1 = False

beim speichern
if CheckBox1 = False then
Sheets(1).Rows(zeile).Delete
end if
If CheckBox1 = True Then Cells(zeile, 30) = 1 Else Cells(zeile, 30) = ""

sieht zumindest beim ersten kästchen so aus als ob es geht, wenn die zelle auf eins steht kommt das kästchen angehackt in der userform und wenn nicht dann kommt es nicht angehackt, speichere ich die änderung von gehackt auf nicht gehackt dann übernimmt er in der zelle den wert 1 oder löscht den wert raus
 
Vergib mir so direkt zu sein, aber wenn ich sehe, dass eine Tabellenkalkulation als Datenbank misshandelt wird habe ich einfach keine rechte Lust mehr.


Wie auch immer habe ich dein Häkchen-Konzept noch nicht verinnerlicht.

Ich kann nur nochmal betonen, dass es grundsätzlich simpel ist beim Init der Form ein Häkchen anhand eines Zellzustands (Bastler könnten ein binäre Zahl nutzen um in einem Rutsch mehrere Häkchen an den Haken zu nehmen) zu setzen oder zu leeren, als Zwischenspeicher. Das ist auch eine reichlich normale Maßnahme. Man parkt die Zelle weit weg oder benutzt das Prinzip «weißer Adler auf weißem Grund».

Warum aber sollte ich an Zellinhalten rumbasteln damit darauf ein Häkchen reagiert? Solche Speicher lasse ich tunlichst in Ruhe - dann gerade dafür soll ja eine Form das FrontEnd sein.
Häkchen setze ich zum Steuern, nach meinem Verständnis um wie bei einer Orgel die Register zu ziehen und dann ordentlich auf die OK-Taste zu hauen. Bestätigungen (Sichtregister) realisiert man mit «Labeln», als Beschriftungsfeldern (an denen keiner rumfummlen kann).

Was also soll das Endergebnis all des Tuns sein? Wie soll die Bedienung in der Handhabung sein?

CN8
 
Zurück
Oben