Microsoft Excel

Herbers Excel/VBA-Archiv

datum


Betrifft: datum von: Micha
Geschrieben am: 18.10.2017 20:37:52

Hallo...

Ich habe eine Tabelle, die nach bestimmtem Datum nicht mehr funktionieren darf.

in Spalten k1:k31 aller Arbeitsblätter sind Datum Vorhanden.
Ich habe es mit folgendem Code versucht. Es klappt leider nicht.

<pre>Sub Datumchek()
If DateValue(ActiveSheet.Range("K1:K31").Value) > 43101(sprich 1.1.2018) Then
ActiveSheet.Range("K1:K31") = "die Tabelle darf nicht mehr benutzt werden"
End If
End Sub</pre>

Ich kann kein VBA. Diesen Code habe ich aus dem Internet.
Weiß jemand, wie es geht, bzw. was ich falsch mache.

LG
Micha

  

Betrifft: AW: datum von: Hajo_Zi
Geschrieben am: 19.10.2017 05:47:11

Hallo Micha,

Du musst jede einzelne Zelle prüfen.
Oder

 If WorksheetFunction.COUNTIF(#REF!,">="& "1.1.2018")>1 then

GrußformelHomepage

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.

Beiträge von Werner, Luc, robert und folgende lese ich nicht.


  

Betrifft: AW: datum von: mmat
Geschrieben am: 19.10.2017 10:23:16

Hallo,
dein Code produziert eine Fehlermeldung "Typen unverträglich", stimmts?

K1:K31 sind 31 einzelne Zellen, in denen ein Datum stehen kann. Was ist die Voraussetzung für Ungültigkeit? Wenn in einer davon ein Datum >43101 auftaucht oder in allen oder nur in einer bestimmten ??

Dann wirkt dein Code nur auf das aktuelle Blatt, die Mappe scheint aber mehrere zu haben. Sollen alle auf einmal untersucht werden?

vg, MM


  

Betrifft: AW: datum von: Micha
Geschrieben am: 19.10.2017 19:19:37

hallo mma!
danke für die schnelle Antwort.
Das Datum anderer Blätter sind für andere Monate in 2018 gedacht.
dieses Blatt, das ich im Moment meine, ist Januar.
Natürlich wenn Januar nicht funktioniert, funktionieren die anderen Blätter auch nicht mehr, weil die Daten jedes Monates von den Daten des davor liegenden Monats abhängen.
wäre gut, wenn ich den Code in ein Modul platzieren könnte, dann wären alle k1:k31 für das ganze ja automatisch gesperrt. Also alle Monate wären gesperrt.

LG
Micha


  

Betrifft: AW: datum von: mmat
Geschrieben am: 20.10.2017 10:47:31

Also schön, das sollte es tun

Sub hwds()
Dim d As Double
  d = WorksheetFunction.CountIf(Range("K1:K31"), ">=" + "43101")
  If d > 0 Then ActiveSheet.Range("K1:K31") = "habe fertich"
End Sub



  

Betrifft: AW: datum von: Micha
Geschrieben am: 20.10.2017 15:57:35

Hallo noch mal....
Danke schon mal für die Antwort.
Es klappt bei mir leider nicht.
Ich habe den Code einmal auf das Blatt Januar(weil Januar der Beginn vom Rest ist) geschrieben, und einmal in Modul. Dann habe ich das Datum in der Tabelle erhöht, Es passiert nicht.
Die Tabelle funktionier nach wie vor.

LG


  

Betrifft: AW: datum von: mmat
Geschrieben am: 23.10.2017 09:49:30

Der Code muß in ein "normales" Modul, damit er auf allen Arbeitsblättern funktioniert. So wie das im Moment dasteht, wird er nicht automatisch ausgeführt.

Damit er automatisch ausgeführt wird ist einiges zu ergänzen:

Rem Im Codemodul jedes Arbeitsblatts

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not (Intersect(Target, Range("K1:K31")) Is Nothing) Then hwds Me
End Sub

Rem In einem allgemeinen Modul

Option Explicit

Sub hwds(ws As Worksheet)
Dim d As Double
  d = WorksheetFunction.CountIf(ws.Range("K1:K31"), ">=" + "43101")
  If d > 0 Then
    Application.EnableEvents = False
    ws.Range("K1:K31") = "habe fertich"
    Application.EnableEvents = True
  End If
End Sub