VBA Grenzwerte in String prüfen Regex ??? Excel2010
Hallo zusammen,
in meiner Tabelle soll der Bereich Z8S9 bis Z76S20 Zeile für Zeile überprüft werden.
In den Spalten 21, 22 und 23 befinden sich 3 Grenzwerte (oder auch keine Grenze) auf die geprüft werden soll.
Alle Zellen deren Inhalt den Grenzwert überschreitet sollen farblich hervorgehoben werden.
Bedingte Formatierungen haben leider nicht zum Ziel geführt, da alle Zellen als Zeichenfolge und nicht als Zahl gefüllt werden.
Ebenso bekomme ich zu viele Fehler mit hochgestellen Zahlen, Whitespaces und Operatoren.
Wenn mir jemand bei der erstellung einer passenden VBA möglichst mit Regex in einer SELECT CASE Funktion helfen könnte, wäre ich extrem dankbar.
Jede Erklärung oder Schnipsel der mich zum Ziel führt ist herzlich Willkommen.
Gerne auch etwas alternatives....
In der abgebildeten Tabelle ist ein Auszug der möglichen Werte.
Basis ist MS Office 2010
Vielleich gibt es ja jemanden, den das Ganze weniger einschüchtert wie mich Anfänger....
Viele Grüße Chilli...
in meiner Tabelle soll der Bereich Z8S9 bis Z76S20 Zeile für Zeile überprüft werden.
In den Spalten 21, 22 und 23 befinden sich 3 Grenzwerte (oder auch keine Grenze) auf die geprüft werden soll.
Alle Zellen deren Inhalt den Grenzwert überschreitet sollen farblich hervorgehoben werden.
Bedingte Formatierungen haben leider nicht zum Ziel geführt, da alle Zellen als Zeichenfolge und nicht als Zahl gefüllt werden.
Ebenso bekomme ich zu viele Fehler mit hochgestellen Zahlen, Whitespaces und Operatoren.
Wenn mir jemand bei der erstellung einer passenden VBA möglichst mit Regex in einer SELECT CASE Funktion helfen könnte, wäre ich extrem dankbar.
Jede Erklärung oder Schnipsel der mich zum Ziel führt ist herzlich Willkommen.
Gerne auch etwas alternatives....
In der abgebildeten Tabelle ist ein Auszug der möglichen Werte.
Basis ist MS Office 2010
Vielleich gibt es ja jemanden, den das Ganze weniger einschüchtert wie mich Anfänger....
Viele Grüße Chilli...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 330426
Url: https://administrator.de/contentid/330426
Ausgedruckt am: 25.11.2024 um 23:11 Uhr
3 Kommentare
Neuester Kommentar
Hi,
wieder einer ohne jeglichen eigenen Versuch mit Code, immer das selbe hier ..., na dann viel Spaß.
Warum Ihr die Tabelle nicht einfach bereinigt bleibt wohl euer Geheimnis.
Gruß cruzer
p.s. das mir ja keiner von euch ins Trinkwasser pisst!
wieder einer ohne jeglichen eigenen Versuch mit Code, immer das selbe hier ..., na dann viel Spaß.
Warum Ihr die Tabelle nicht einfach bereinigt bleibt wohl euer Geheimnis.
Dim regex As Object
Sub CheckLimits()
Dim cell As Range, dblValue As Variant, dblLimit As Variant, c As Variant
With ActiveSheet
For Each cell In .Range("E9:P76")
dblValue = GetDecimalValue(cell)
If dblValue <> False Then
For Each c In Array("Q", "R", "S")
dblLimit = GetDecimalValue(.Cells(cell.Row, c))
If dblLimit <> False And dblValue > dblLimit Then
cell.Interior.Color = vbRed
End If
Next
End If
Next
End With
End Sub
Function GetDecimalValue(cell As Range)
On Error GoTo Exception
If regex Is Nothing Then
Set regex = CreateObject("vbscript.regexp")
regex.IgnoreCase = True
regex.Pattern = "\d+([,\.]\d+)?"
End If
Set matches = regex.Execute(Trim(cell.Value))
If matches.Count > 0 Then
GetDecimalValue = CDbl(matches(0))
Exit Function
End If
Exception:
GetDecimalValue = False
End Function
p.s. das mir ja keiner von euch ins Trinkwasser pisst!
Gegen Cash gerne ...->PN