Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mit einen Kontrollkästchen einen nicht aktualisierenden Datum setzen
#1
Hallo, mein Name ist Felix und habe ein kleines Problem. ^^´
Ich möchte gerne per Formularsteuerelement (Kontrollkästchen) ein Datum setzen, welches sich nicht ständig aktualisieren soll.
Ich habe mich etwas mit VBA auseinandergesetzt, aber leider ohne Erfolg. 

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
   If Intersect(Target, Range("D1:D10")) Is Nothing Then Exit Sub
   If Target.Count > 1 Then Exit Sub
   If Target = -1 Then
       Target.Offset(0, -1) = CDate(Format(Now, "dd.mm.yyyy"))
   Else
     If Target = 0 Then
       Target.Offset(0, -1).ClearContents
     End If
   End If
End Sub

Hierbei habe ich mich auf die Spalte D1 - D10 beschränkt. Wenn ich manuell WAHR (-1) oder FALSCH (0) eingebe in die Spalte , funktioniert es einwandfrei
und das Datum wird links angezeigt. Mein Problem liegt darin, dass ich es nicht mit ein Formularsteuerelement (Kontrollkästchen) verbinden kann...
Es akzeptiert nicht die WAHR und FALSCH vom Formularsteuerelement (z.B mach ich ein Hacken und die Zeile D3 wird WAHR und mehr passiert auch nicht).
Hoffentlich kann mir jemand hierbei weiterhelfen und gegenfalls kann ich mein Wissenstand auch erweitern.
Bin relativ neu in der Materie, sonst habe ich nie mit Excel gearbeitet ^^´

MfG Felix
Antworten Top
#2
Hallo Felix,

bei VBA kann ich zwar nicht helfen, der Wahrheitswert ist aber nicht -1 sondern 1.
Gruß Günter
Jeder Fehler erscheint unglaublich dumm, wenn andere ihn begehen.
angebl. von Georg Christoph Lichtenberg (1742-1799)
[-] Folgende(r) 1 Nutzer sagt Danke an WillWissen für diesen Beitrag:
  • Vartox
Antworten Top
#3
(29.07.2019, 23:16)Vartox schrieb: gegenfalls kann ich mein Wissenstand auch erweitern.

Moin Felix!
Ein Formularsteuerelement löst kein Change-Ereignis aus, deshalb funktioniert das auch nicht bei Dir.
Du könntest statt dessen eine ActiveX-Checkbox nehmen und die LinkedCell "unter die Box" legen.

Zu Deinem Code:

If Target.Count > 1 Then Exit Sub
ist überflüssig, denn Du kannst ja immer nur eine Box ändern.

CDate(Format(Now, "dd.mm.yyyy"))
ist von hinten durch die Brust ins Auge, hier reicht Date völlig!

Davon ab:
Das aktuelle Datum schreibe ich einfach mittels Strg+. (Punkt) in die Zelle, dazu brauche ich keinen aufwändigen optischen Schnick-Schnack.

Wenn es dennoch "hübsch" sein soll:
Ich habe hier im Forum mal ein Tutorial geschrieben, welches auf Wingdings beruht:
https://www.clever-excel-forum.de/Thread...mal-anders

Hält die Datei schlank, außerdem muss man die KKs nicht mühselig mit der Maus platzieren.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Vartox
Antworten Top
#4
Hallo Felix, :19:

wenn du bei "Kontrollkästchen" bleiben möchtest, dann so: :21:

.xlsb   Kontrollkaestchen_Formular_Klick_Datum_links_Application_Caller.xlsb (Größe: 17,69 KB / Downloads: 0)

Fügst du noch weitere "Kontrollkästchen" hinzu, musst du nur mit der rechten Maustaste auf das Kästchen, dann Makro zuweisen und "Main" auswählen.

Die "Kontrollkästchen" lassen sich auch per Makro erzeugen, platzieren und das Makro zuweisen.
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • Vartox
Antworten Top
#5
Hallo Felix,

folgendes Makro kommt in ein allgemeines Modul (Einfügen - Modul):
Sub SetzeDatum()
With ActiveSheet.CheckBoxes(Application.Caller)
If .Value = 1 Then
.TopLeftCell.Offset(0, -1).Value = Date
Else
.TopLeftCell.Offset(0, -1) = ""
End If
End With
End Sub
Weise anschließend allen Formular-Kontrolkästchen dann dieses Makro zu.

@Ralf: Ein Formular-Kontrolkästchen kann man auch mit einer Zelle verknüpfen. Wink

Gruß Uwe
[-] Folgende(r) 1 Nutzer sagt Danke an Kuwer für diesen Beitrag:
  • Vartox
Antworten Top
#6
Hallo Felix, :19:

in folgendem Beispiel siehst du wie man "Kontrollkästchen" erstellt, benennt, platziert und ein Makro zuweist: :21:

.xlsb   Kontrollkaestchen_Formular_Erstellen_Makro_zuweisen_Klick_Datum_links_Application_Caller.xlsb (Größe: 19,72 KB / Downloads: 3)

Hast du noch mehrere "Kontrollkästchen" auf dem Tabellenblatt, musst du die Codezeile ".CheckBoxes.Delete" auskommentieren und die darüber liegende Schleife nehmen. LinkedCell kannst du auch zuweisen - sofern du das brauchst. :21:
________
Servus
Case
[-] Folgende(r) 1 Nutzer sagt Danke an Case für diesen Beitrag:
  • Vartox
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste