Thema Datum  Von Nutzer Rating
Antwort
Rot Range definieren anhand ActiveCell
17.02.2022 17:22:17 haudrauf64
NotSolved
17.02.2022 17:23:58 haudrauf 64
NotSolved

Ansicht des Beitrags:
Von:
haudrauf64
Datum:
17.02.2022 17:22:17
Views:
608
Rating: Antwort:
  Ja
Thema:
Range definieren anhand ActiveCell

Hi! Ich bin absoluter Beginner in VBA - entschuldigt die (teilweise verzweifelten) Ansätze ;-)

Jeweils orange hinterlegt (Zelle A1 und A4) sind Mainhazards, die jeweils zB. 2 untergeordnete Teilhazards besitzen (in gelb). Jeder Hazard besitzt 4 Indikatoren.

Table_of_Hazards

Ziel ist es, die orange Zelle eines Mainhazards anwählen zu können und das Makro markiert allfällige Indikatorenunterschiede bei den Teilhazards farblich. Wenn ich also A1 anwähle, sollen der Bereich B1:E1 mit den Bereichen F2:I2 und F3:I3 verglichen werden und allfällige Unterschiede in F2:I3 markiert werden.

Ich denke ich habe es geschafft, dass das Conditional Formatting nur bei den Teilhazards greift (nicht grösser als 10) und dass es merkt, wo das Conditional Formatting anzusetzen ist.

  • Ich krieg es aber nicht hin, dass VBA diese beiden Bereiche (wie =NOT(B$1=F2) aber anhand ActiveCell.Offset) vergleicht.
  • Ich krieg es auch nicht hin, dass der ActiveCell.Offset mit dem Loop arbeitet und die Zeilen je nach i angepasst wird (weil zB. ActiveCell.Offset(i,1) nicht funktioniert)

Das war mein letzter Versuch:

Sub ChangeMarker()

Dim Mainhazard As String
Mainhazard = ActiveCell.Value
Mainhazard = Right(ActiveCell.Value, 3)
Dim Subhazard As String
Subhazard = ActiveCell.Offset(i, 0).Value
Subhazard = Right(ActiveCell.Offset(i, 0).Value, 3)

'This should activate the Loop?
For i = 1 To Rows.Count
Next i

'Check if Subhazard is belonging to the Mainhazard
If Mainhazard - Subhazard < 10 Then

'Select the range where the conditional formatting should apply
    Range(ActiveCell.Offset(1, 5), ActiveCell.Offset(1, 8)).Select
    
'This compares the hazard indicators of the mainhazard (ex. B1:E1) to the hazard indicators of the subhazard (ex.F2:I2)
    'Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=NOT(B$1=F2)"

     Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
        "=NOT(ActiveCell.Offset(0, 1).Range(ActiveCell, ActiveCell.Offset(0,3))=ActiveCell.Offset(1,5).Range(ActiveCell, ActiveCell.Offset(0,3))"
        
    Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
    With Selection.FormatConditions(1).Interior
        .PatternColorIndex = xlAutomatic
        .Color = 5296274
        .TintAndShade = 0
    End With
    Selection.FormatConditions(1).StopIfTrue = False
End If
End Sub

Sorry für die Umstände & Tausend Dank für allfällige Hilfe
Gruss!

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Range definieren anhand ActiveCell
17.02.2022 17:22:17 haudrauf64
NotSolved
17.02.2022 17:23:58 haudrauf 64
NotSolved