Supportnet / Forum / Tabellenkalkulation
Abfrage in VBA nach Wochenende wenn wahr, Zelle ab C? bis E? sperren
Frage
Hi Leutz,
brauche schon wieder fachmännische Hilfe.
Hab eine Art Kalender erzeugt. mit einer Schaltfläche komme ich in den nächsten Monat. Auf den Feldern, wo ich was eintragen kann, hab ich eine Gültigkeit hingelegt. Wie bekomm ich dass aber nun hin, die Zellen auszulesen, wo das Wochenende steht und die übernächste (also Spalte C) und nachfolgende für weitere Einträge zu sperren? Hab ja nicht vor, mir was am WE reinzuschreiben!
wenn ihr was wisst, bitte melden
Antwort 1 von JoeKe
Hallo,
das ließe sich mit dem SelectionChange- Ereignis machen:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column < 3 Or Target.Column > 5 Then Exit Sub
If Cells(Target.Row, 1) = "" Then Exit Sub
If Application.WorksheetFunction.Weekday(Cells(Target.Row, 1), 2) = 6 Then
MsgBox "Es ist Samstag!"
Cells(Target.Row + 2, Target.Column).Select
ElseIf Application.WorksheetFunction.Weekday(Cells(Target.Row, 1), 2) = 7 Then
MsgBox "Es ist Sonntag!"
Cells(Target.Row + 1, Target.Column).Select
End If
End Sub
Der Code gehört in das VBA-Projekt der Tabelle.
Gruß
JöKe
das ließe sich mit dem SelectionChange- Ereignis machen:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column < 3 Or Target.Column > 5 Then Exit Sub
If Cells(Target.Row, 1) = "" Then Exit Sub
If Application.WorksheetFunction.Weekday(Cells(Target.Row, 1), 2) = 6 Then
MsgBox "Es ist Samstag!"
Cells(Target.Row + 2, Target.Column).Select
ElseIf Application.WorksheetFunction.Weekday(Cells(Target.Row, 1), 2) = 7 Then
MsgBox "Es ist Sonntag!"
Cells(Target.Row + 1, Target.Column).Select
End If
End Sub
Der Code gehört in das VBA-Projekt der Tabelle.
Gruß
JöKe
Antwort 2 von CaroS
Hallo,
ich würde sagen, die Möglichkeiten sind sehr verschieden und reichen von (1.) sanften optischen Hinweisen, die Eintragungen trotzdem noch zulassen, bis zur absolut unüberwindlichen Verhinderung (9.).
1. Mit bedingter Formatierung die Wochenenden farblich hervorheben (Hintergrundfarbe oder Rahmen).
...
9. Die Gültigkeitsprüfung so erweitern, dass eine Eingabe am Wochenende unmöglich ist. Dazu ggf. auch Eingabemeldung und Fehlermeldung ausfüllen und aktivieren.
An welche Größenordnung hattet Du denn so gedacht?
Gruß,
CaroS
ich würde sagen, die Möglichkeiten sind sehr verschieden und reichen von (1.) sanften optischen Hinweisen, die Eintragungen trotzdem noch zulassen, bis zur absolut unüberwindlichen Verhinderung (9.).
1. Mit bedingter Formatierung die Wochenenden farblich hervorheben (Hintergrundfarbe oder Rahmen).
...
9. Die Gültigkeitsprüfung so erweitern, dass eine Eingabe am Wochenende unmöglich ist. Dazu ggf. auch Eingabemeldung und Fehlermeldung ausfüllen und aktivieren.
An welche Größenordnung hattet Du denn so gedacht?
Gruß,
CaroS
Antwort 3 von Aliba
Hi,
also nehmen wir mal an, Deine Datumswerte stehen in Spalte A.
Du schreibst ja Du hast bereits eine Gültigkeitsliste.
Markiere mal diese Einträge und dann über EINFÜGEN-NAMEN-DEFINIEREN vergibts Du für diesen Bereich den Namen Tage_1
Nun vergibst Du für eine leere Zelle den Namen
Tage_2
Nun markierst Du die Zellen mit der DATEN-Gültigkeit,
dann: DATEN - GÜLTIGKEIT - LISTE und machst hier folgenden Eintrag.
=INDIREKT("Tage_"&WAHL(WOCHENTAG($A1;2);1;1;1;1;1;2;2))
$A1 musst Du natürlich auf Deine Gegebenheiten anpassen.
CU Aliba
also nehmen wir mal an, Deine Datumswerte stehen in Spalte A.
Du schreibst ja Du hast bereits eine Gültigkeitsliste.
Markiere mal diese Einträge und dann über EINFÜGEN-NAMEN-DEFINIEREN vergibts Du für diesen Bereich den Namen Tage_1
Nun vergibst Du für eine leere Zelle den Namen
Tage_2
Nun markierst Du die Zellen mit der DATEN-Gültigkeit,
dann: DATEN - GÜLTIGKEIT - LISTE und machst hier folgenden Eintrag.
=INDIREKT("Tage_"&WAHL(WOCHENTAG($A1;2);1;1;1;1;1;2;2))
$A1 musst Du natürlich auf Deine Gegebenheiten anpassen.
CU Aliba
Antwort 4 von anrufjoker_da
Also Jöke, bei deiner Antwort bekomme ich immer einen Fehler. Vll mach ich auch was falsch.
Aber er macht es nur an den Tagen, wo Wochenende ist, dass ist schonmal gut.
CaroS
Hast vll überlesen, dass ich schon eine Gültigkeit verwendet habe. Wüsste keine Möglichkeit, noch eine zu machen.
Alibaba´s Antwort probier ich auch gleich mal.
Aber er macht es nur an den Tagen, wo Wochenende ist, dass ist schonmal gut.
CaroS
Hast vll überlesen, dass ich schon eine Gültigkeit verwendet habe. Wüsste keine Möglichkeit, noch eine zu machen.
Alibaba´s Antwort probier ich auch gleich mal.
Antwort 5 von anrufjoker_da
ich bekomm das so auch nicht hin.
Kann ich die Datei vll jemand von euch geben, und ihr baut mir das nach euren Vorstellungen und meinen o.g. Wünschen?
oder ihr habt ne Idee, was ich falsch mache
MfG
der Paul
Kann ich die Datei vll jemand von euch geben, und ihr baut mir das nach euren Vorstellungen und meinen o.g. Wünschen?
oder ihr habt ne Idee, was ich falsch mache
MfG
der Paul
Antwort 6 von CaroS
Hallo anrufjoker_da,
ich weiß ja nicht, ob Du Dich da beim Griff in den Farbkasten etwas vertan hast, aber ich habe jedenfalls nicht überlesen, dass Du bereits eine Gültigkeit festgelegt hattest. Deswegen haben ich auch geschrieben "die Gültigkeitsprüfung so erweitern ... "
Gegenfrage: Hast Du gelesen, dass ich "erweitern" geschrieben habe?
Ich habe natürlich gedacht, wenn einer schon eine Gültigkeitsbedingung verwendet, dann hat er wahrscheinlich ein bisschen Ahnung davon und ist in der Lage, die zu erweitern. Dass Du nun "keine Möglichkeit [wüsstest], noch eine zu machen" zeigt aber leider, dass Du schon beim Lesen nicht sehr gründlich bist, denn von einer zweiten Gültigkeitsbedingung war nicht die Rede, sondern davon, die vorhandene zu erweitern.
Übrigens, auch Aliba hat Dir (vielleicht sogar aus demselben Grund?) eine Gültigkeitsbedingung vorgeschlagen - gute Idee, wenigstens die mal auszuprobieren. Trage die Formel aber nicht unter Liste ein (geht nämlich nicht), sondern unter Benutzerdefiniert. Dann funktioniert das Ganze allerbestens!
Und wenn Du nun noch schreibst, wie Deine erste Gültigkeitsbedingung aussieht, dann erklärt Dir vielleicht auch jemand, wie Du die beiden miteinander kombiniert kriegst. (Ich muss allerdings gleich für ´ne Woche verreisen, habe dann keinen PC, ist keine böse Absicht.)
Gruß,
CaroS
ich weiß ja nicht, ob Du Dich da beim Griff in den Farbkasten etwas vertan hast, aber ich habe jedenfalls nicht überlesen, dass Du bereits eine Gültigkeit festgelegt hattest. Deswegen haben ich auch geschrieben "die Gültigkeitsprüfung so erweitern ... "
Gegenfrage: Hast Du gelesen, dass ich "erweitern" geschrieben habe?
Ich habe natürlich gedacht, wenn einer schon eine Gültigkeitsbedingung verwendet, dann hat er wahrscheinlich ein bisschen Ahnung davon und ist in der Lage, die zu erweitern. Dass Du nun "keine Möglichkeit [wüsstest], noch eine zu machen" zeigt aber leider, dass Du schon beim Lesen nicht sehr gründlich bist, denn von einer zweiten Gültigkeitsbedingung war nicht die Rede, sondern davon, die vorhandene zu erweitern.
Übrigens, auch Aliba hat Dir (vielleicht sogar aus demselben Grund?) eine Gültigkeitsbedingung vorgeschlagen - gute Idee, wenigstens die mal auszuprobieren. Trage die Formel aber nicht unter Liste ein (geht nämlich nicht), sondern unter Benutzerdefiniert. Dann funktioniert das Ganze allerbestens!
Und wenn Du nun noch schreibst, wie Deine erste Gültigkeitsbedingung aussieht, dann erklärt Dir vielleicht auch jemand, wie Du die beiden miteinander kombiniert kriegst. (Ich muss allerdings gleich für ´ne Woche verreisen, habe dann keinen PC, ist keine böse Absicht.)
Gruß,
CaroS
Antwort 7 von JoeKe
Hallo anrufjoker_da;
Was denn nun? Bekommst du eine Fehlermeldung (und wenn welche) oder funktioniert es?
War doch so gewünscht!
Gruß
JöKe
Zitat:
Also Jöke, bei deiner Antwort bekomme ich immer einen Fehler. Vll mach ich auch was falsch.
Aber er macht es nur an den Tagen, wo Wochenende ist, dass ist schonmal gut.
Also Jöke, bei deiner Antwort bekomme ich immer einen Fehler. Vll mach ich auch was falsch.
Aber er macht es nur an den Tagen, wo Wochenende ist, dass ist schonmal gut.
Was denn nun? Bekommst du eine Fehlermeldung (und wenn welche) oder funktioniert es?
Zitat:
er macht es nur an den Tagen, wo Wochenende ist
er macht es nur an den Tagen, wo Wochenende ist
War doch so gewünscht!
Gruß
JöKe
Antwort 8 von anrufjoker_da
der Fehler nennt sich:
Laufzeitfehler 1004
Die Weekday -Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
das bringt der aber nur bei Klick auf ein Wochenende
Wenn ich auf einen anderen Tag klicke passiert dass, was soll. Vll mach ich es noch ein bissel genauer:
Spalte A = Tage (Montag,Dienstag....)
Spalte B = Datum
Spalten C bis H ist frei. Dort wird am Ende hingeschrieben, welcher Azubi, wann in welche Abteilung gehen muss.
Nur am WE wollen wir ja nun nicht arbeiten :)
Hab einen Klick mit der rechten Maustaste auf das Arbeitsblatt gemacht Code anzeigen und deinen Code eingefügt. Muss ich sonst noch was machen? Vll fällt dir ja was ein.
Und die Lösung mit der Gültigkeit:
In Spalten C bis H hab ich eine Auswahlliste für Abteilung und Abteilungsleiter aufgebaut.
Ich probiere da jetzt noch ein bissel weiter, vll funktioniert dass ja doch irgendwie mit einer Gültigkeit.
Danke aber erst mal für eure tatkräftige Hilfe.
Laufzeitfehler 1004
Die Weekday -Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
das bringt der aber nur bei Klick auf ein Wochenende
Wenn ich auf einen anderen Tag klicke passiert dass, was soll. Vll mach ich es noch ein bissel genauer:
Spalte A = Tage (Montag,Dienstag....)
Spalte B = Datum
Spalten C bis H ist frei. Dort wird am Ende hingeschrieben, welcher Azubi, wann in welche Abteilung gehen muss.
Nur am WE wollen wir ja nun nicht arbeiten :)
Hab einen Klick mit der rechten Maustaste auf das Arbeitsblatt gemacht Code anzeigen und deinen Code eingefügt. Muss ich sonst noch was machen? Vll fällt dir ja was ein.
Und die Lösung mit der Gültigkeit:
In Spalten C bis H hab ich eine Auswahlliste für Abteilung und Abteilungsleiter aufgebaut.
Ich probiere da jetzt noch ein bissel weiter, vll funktioniert dass ja doch irgendwie mit einer Gültigkeit.
Danke aber erst mal für eure tatkräftige Hilfe.
Antwort 9 von anrufjoker_da
okay hab meinen Fehler gerade herausgefunden
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column < 3 Or Target.Column > 5 Then Exit Sub
If Cells(Target.Row, 1) = "" Then Exit Sub
If Application.WorksheetFunction.Weekday(Cells(Target.Row, 2), 2) = 6 Then
MsgBox "Es ist Samstag!"
Cells(Target.Row + 2, Target.Column).Select
ElseIf Application.WorksheetFunction.Weekday(Cells(Target.Row, 2), 2) = 7 Then
MsgBox "Es ist Sonntag!"
Cells(Target.Row + 1, Target.Column).Select
End If
End Sub
Fehlende Angaben helfen euch auch nicht weiter! Danke für die Hilfe!
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column < 3 Or Target.Column > 5 Then Exit Sub
If Cells(Target.Row, 1) = "" Then Exit Sub
If Application.WorksheetFunction.Weekday(Cells(Target.Row, 2), 2) = 6 Then
MsgBox "Es ist Samstag!"
Cells(Target.Row + 2, Target.Column).Select
ElseIf Application.WorksheetFunction.Weekday(Cells(Target.Row, 2), 2) = 7 Then
MsgBox "Es ist Sonntag!"
Cells(Target.Row + 1, Target.Column).Select
End If
End Sub
Fehlende Angaben helfen euch auch nicht weiter! Danke für die Hilfe!

