Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gültigkeit innerhalb eines Zeitraumes mittels VBA

Gültigkeit innerhalb eines Zeitraumes mittels VBA
Lorenz
Hallo Excelprofis
Nach erfolglosem "googeln" bitte ich hier um Hilfe.
In Zeile 10 stehen Kalenderwochen (numerischer Wert) und zwar im Rythmus (SPALTE "1", "15", "28", "42" usw) . Dazwischen ergibt sich ein zeitraum. Innerhalb dieses Zeitraumes darf Wird in Zeile 14-99 das Zeichen "x" maximal drei Mal vorkommen. der Versuch ein weiteres "x" ein zu gegeben soll verhindert werden.
Hat vielleicht jemand ähnliches schon erstellt, oder vielleicht einen Link zu einer Lösung?
VBA sollte es schon sein, da ich so eine Fkt in UF u. div. anderen Belangen verwenden möchte.
Gruß
Lorenz
AW: Längs oder quer oder insgesamt? o.r.T.
16.01.2011 12:44:52
Gerd
Gruß Gerd
AW: Längs oder quer oder insgesamt? o.r.T.
16.01.2011 12:51:43
Lorenz
Hallo Gerd
Zeitraum u. Gültigkeit erstreckt sich quer (über Spalten)
Gruß Lorenz
AW: Gültigkeit innerhalb eines Zeitraumes mittels VBA
16.01.2011 13:36:49
Gerd
Hallo Lorenz,
der Spaltenbereich muss "brutto" angegeben werden.
Function Pruefung(Blatt As Worksheet, Zeile As Long, Spalten As Range, Optional Kriterium As  _
String = "x", Optional Anzahl As Long = 3) As Boolean
Pruefung = WorksheetFunction.CountIf(Application.Intersect(Blatt.Rows(Zeile), Blatt.Spalten),  _
Kriterium) 
Gruß Gerd
AW: Gültigkeit innerhalb eines Zeitraumes mittels VBA
16.01.2011 14:56:21
Lorenz
Hallo Gerd,
Wahrscheinlich war meine Erklärung für`n A.., denn mit deiner Funktion komme ich nicht zurecht (werde sie aber zu Lernzwecken weiterverwenden).
Habe der Verständlichkeit(meines Wunsches) halber die Datei mit kleinem Text versehen
https://www.herber.de/bbs/user/73089.xlsx
Danke für die Mühe(n) &
Grüsse Lorenz
Anzeige
AW: Gültigkeit innerhalb eines Zeitraumes mittels VBA
16.01.2011 22:49:20
Lorenz
AW: Gültigkeit innerhalb eines Zeitraumes mittels VBA
18.01.2011 12:15:16
fcs
Hallo Lorenz,
hier mein Lösungsvorschlag. Er überwacht die Eingaben in einem vorgegebenen Tabellen-Bereich sowie die Anzahl der Prüfwerte in der KW (Mo bis So) in der die Eingabe gemacht wird.
Den Code muss du im VBA-Editor unter der Tabelle einfügen, deren Eingaben überwacht werden sollen.
Gruß
Franz
'Code im Tabellen-Modul
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim SpalteL As Long, SpalteR As Long, Wochentag As Long, AnzWerte As Long
Dim SpalteLetzte As Long, Zeileletzte As Long
Dim wks As Worksheet, Zelle As Range
Const vPruefWert = "x"
Const MaxAnzPruefWerte = 3 'Max. Anzahl Prüfwerte von Mo bis So
'1. Zeile ab der Eingaben geprüft werden sollen - oberhalb dieser Zeile muss ein Datum _
eingetragen sein
Const Zeile1 As Long = 6
'1. Spalte ab der Eingaben geprüft werden sollen
Const Spalte1 As Long = 1
Set wks = ActiveSheet
'Letzte Zeile bis zu der die Eingaben geprüft werden sollen
Zeileletzte = 11
'Letzte Spalte bis zu der Eingaben geprüft werden sollen
'SpalteLetzte = 200 'fester Wert
With wks
'oder dynamisch basierend auf letztem Spalteneintrag in Datumszeile
SpalteLetzte = .Cells(Zeile1 - 1, .Columns.Count).End(xlToLeft).Column + 1
End With
'Prüfung des Eingabebereichs der geänderten Zelle (Target)
If Target.Row >= Zeile1 And Target.Row = Spalte1 And Target.Column  MaxAnzPruefWerte Then
Application.EnableEvents = False
'Eingabe wert wieder löschen
Target.ClearContents
Application.EnableEvents = True
MsgBox "In einer Zeile dürfen im Zeitraum Montag bis Sonntag max. " _
& MaxAnzPruefWerte & " """ & vPruefWert & """ eingetragen werden.", _
vbInformation + vbOKOnly, "Prüfung Einträge in Wochenzeitraum"
End If
End If
End Sub

Anzeige
AW: Gültigkeit innerhalb eines Zeitraumes mittels VBA
18.01.2011 17:14:23
Lorenz
Hallo Franz
Ist es unverschämt wenn ich dich um eine Ergänzung bitte? Ich würde nämlich eine Erweiterung,wie in etwa: Const Case vPruefWert = "x" or Const vPruefWert = "X" benötigen. bin ich leider erst beim Ausprobieren Deines wunderbaren Codes draufgekommen. Case aus dem Grund da ich später auch andere Werte und Zeichen zur Eingabe überwachen muß.
Danke
Lorenz
AW: Gültigkeit innerhalb eines Zeitraumes mittels VBA
18.01.2011 19:26:54
fcs
Hallo Lorenz,
die Prüfung der Eingabewerte kannst du wie folgt für mehrere Werte anpassen.
Die Prüfung der Anzahl der Einträge eines Zeichens im Wochenzeitraum ist unabhängig von der Groß-/Kleinschreibung.
Gruß
Franz

Private Sub Worksheet_Change(ByVal Target As Range)
Dim SpalteL As Long, SpalteR As Long, Wochentag As Long, AnzWerte As Long
Dim SpalteLetzte As Long, Zeileletzte As Long
Dim wks As Worksheet, Zelle As Range
Dim arrEingabe, iIndex As Long, sEingaben As String, bZulaessig As Boolean
Const vPruefWert = "x"
arrEingabe = Array("x", "X") 'Array mit zulässigen Eingabewerten
Const MaxAnzPruefWerte = 3 'Max. Anzahl Prüfwerte von Mo bis So
'1. Zeile ab der Eingaben geprüft werden sollen - oberhalb dieser Zeile muss ein Datum _
eingetragen sein
Const Zeile1 As Long = 6
'1. Spalte ab der Eingaben geprüft werden sollen
Const Spalte1 As Long = 1
Set wks = ActiveSheet
'Letzte Zeile bis zu der die Eingaben geprüft werden sollen
Zeileletzte = 11
'Letzte Spalte bis zu der Eingaben geprüft werden sollen
'SpalteLetzte = 200 'fester Wert
With wks
'oder dynamisch basierend auf letztem Spalteneintrag in Datumszeile
SpalteLetzte = .Cells(Zeile1 - 1, .Columns.Count).End(xlToLeft).Column + 1
End With
'Prüfung des Eingabebereichs der geänderten Zelle (Target)
If Target.Row >= Zeile1 And Target.Row = Spalte1 And Target.Column  MaxAnzPruefWerte Then
Application.EnableEvents = False
'Eingabe wert wieder löschen
Target.ClearContents
Application.EnableEvents = True
MsgBox "In einer Zeile dürfen im Zeitraum Montag bis Sonntag max. " _
& MaxAnzPruefWerte & " """ & vPruefWert & """ eingetragen werden.", _
vbInformation + vbOKOnly, "Prüfung Einträge in Wochenzeitraum"
End If
End If
End Sub

Anzeige
Super, Danke fcs owT
18.01.2011 21:43:35
Lorenz

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige