Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1580to1584
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

Unübersichtliche If-Anweisung vereinfachen

Unübersichtliche If-Anweisung vereinfachen
13.09.2017 18:55:08
Volker
Liebe Forengemeinde!
Ich brüte gerade darüber, wie ich u.a. funktionierende, jedoch unübersichtliche If-Anweisung kürzer und übersichtlicher formulieren kann.
Ziel ist es, bei der Formatierung von Tabellenblättern zu überprüfen, ob jeweils der Wert in "B6" oder "B51" oder "B96" oder "B141" oder "B186" oder "B231" des Aktiven Blattes in den Grenzen jeweils zweier Werte im Bezugstabellenblatt "Master" liegt. Und zwar entweder zwischen "Master!M2" und "Master!N2" oder "Master!M3" und "Master!N3" oder "Master!M4" und "Master!N4" oder "Master!M5" und "Master!N5" oder "Master!M6" und "Master!N6"
With ActiveSheet
If .Range("B6").Value >= Range("Master!M2") And .Range("B6").Value = Range("Master!M2") And .Range("B51").Value Or .Range("B96").Value >= Range("Master!M2") And .Range("B96").Value = Range("Master!M2") And .Range("B141").Value Or .Range("B186").Value >= Range("Master!M2") And .Range("B186").Value = Range("Master!M2") And .Range("B231").Value Or .Range("B6").Value >= Range("Master!M3") And .Range("B6").Value = Range("Master!M3") And .Range("B51").Value Or .Range("B96").Value >= Range("Master!M3") And .Range("B96").Value = Range("Master!M3") And .Range("B141").Value Or .Range("B186").Value >= Range("Master!M3") And .Range("B186").Value = Range("Master!M3") And .Range("B231").Value Or .Range("B6").Value >= Range("Master!M4") And .Range("B6").Value = Range("Master!M4") And .Range("B51").Value Or .Range("B96").Value >= Range("Master!M4") And .Range("B96").Value = Range("Master!M4") And .Range("B141").Value Or .Range("B186").Value >= Range("Master!M4") And .Range("B186").Value = Range("Master!M4") And .Range("B231").Value Or .Range("B6").Value >= Range("Master!M5") And .Range("B6").Value = Range("Master!M5") And .Range("B51").Value Or .Range("B96").Value >= Range("Master!M5") And .Range("B96").Value = Range("Master!M5") And .Range("B141").Value Or .Range("B186").Value >= Range("Master!M5") And .Range("B186").Value = Range("Master!M5") And .Range("B231").Value Or .Range("B6").Value >= Range("Master!M6") And .Range("B6").Value = Range("Master!M6") And .Range("B51").Value Or .Range("B96").Value >= Range("Master!M6") And .Range("B96").Value = Range("Master!M6") And .Range("B141").Value Or .Range("B186").Value >= Range("Master!M6") And .Range("B186").Value = Range("Master!M6") And .Range("B231").Value Anweisung
usw.
Für eine Zelle habe ich an anderer Stelle eine funktionierende Select Case-Anweisung:
Select Case ActiveCell.Offset(1, 0).Value
Case Range("Master!M2") To Range("Master!N2"), Range("Master!M3") To Range("Master!N3"), Range("Master!M4") To Range("Master!N4") _
, Range("Master!M5") To Range("Master!N5"), Range("Master!M6") To Range("Master!N6")
Ich stehe aber auf dem Schlauch, wie ich auch die Bedingung für die Zellen "B6" bis "B231" einbauen kann.
Ich freue mich über hilfreiche Hinweise!
Volker

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unübersichtliche If-Anweisung vereinfachen
13.09.2017 19:30:20
onur
Wenn ich keinen dummen Fehler eingebaut habe, müsste dies klappen:
Dim found
Dim z, z2
found = False
With ActiveSheet
For z = 6 To 186 Step 45
For z2 = 2 To 5
If .Cells(z, 2) >= Sheets("Master").Cells(z2, 13) And .Cells(z, 2) 

AW: Unübersichtliche If-Anweisung vereinfachen
18.09.2017 18:53:42
Volker
Hallo onur!
Vielen Dank für deine Hilfe!
Du hast keinen dummen Fehler eingebaut. Der Code läuft einwandfrei und macht genau das, was ich wollte - ohne weitere Änderungen.
Gruß
Volker
AW: SelectCase-Version
13.09.2017 21:29:04
Gerd
Hallo Volker!
Sub bb()
Dim X As Long, found As Boolean
With Worksheets("Master")
For X = 186 To 6 Step -45
Select Case ActiveSheet.Cells(X, 2).Value
Case .Cells(2, 13).Value To .Cells(2, 14).Value, _
.Cells(3, 13).Value To .Cells(3, 14).Value, _
.Cells(4, 13).Value To .Cells(4, 14).Value, _
.Cells(5, 13).Value To .Cells(5, 14).Value: Exit For
End Select
Next
End With
found = (X >= 6)
MsgBox found
End Sub

Gruß Gerd
Anzeige
AW: SelectCase-Version
18.09.2017 18:55:40
Volker
Hallo Gerd!
Vielen Dank für deine Hilfe!
Bei deinem Code war noch etwas Anpassungsarbeit notwendig. Ich habe mich letztlich für onurs Variante entschieden.
Gruß
Volker

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige