chillministrator
Goto Top

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....


tabelle

Viele Grüße Chilli...

Content-ID: 330426

Url: https://administrator.de/contentid/330426

Ausgedruckt am: 25.11.2024 um 23:11 Uhr

132272
132272 24.02.2017, aktualisiert am 25.02.2017 um 09:22:58 Uhr
Goto Top
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.
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
Gruß cruzer

p.s. das mir ja keiner von euch ins Trinkwasser pisst! face-wink
Chillministrator
Chillministrator 01.03.2017 um 10:17:36 Uhr
Goto Top
Hey cruzer,

erstmal ein dickes Dankeschön für deine Hilfe und Mühe.

Der Ausdruck bringt mich wirklich noch zum verzweifeln (was wohl eindeutig auf zu wenig Erfahrung zurückzuführen ist).
Den Array-Bereich hab ich auf "U" ,"V" und "W" geändert, der Testlauf ging aber in die Hose.

Zeile 20 ist ein Bererich von 6,5 - 9,5 der erlaubt ist alles andere nicht.
Befindet sich eine ")" im Array müssten die letzten beiden Zeichen vor der Prüfung entfernt werden "6)"
Wenn in einer zu prüfenden Zelle ein "<" vorkommt müsste dieses vor der Prüfung auch ignoriert werden.
Wie bekomme ich denn diese Fälle in den Griff?

Gruß Chillministrator

p.s. don`t eat yellow snow face-wink
132272
132272 01.03.2017 um 10:39:47 Uhr
Goto Top
Gegen Cash gerne ...->PN