Microsoft Excel

Herbers Excel/VBA-Archiv

Zellüberwachung | Herbers Excel-Forum


Betrifft: Zellüberwachung von: Ralf
Geschrieben am: 17.08.2012 09:53:14

Hallo Forum,

ich möchte eine Zelle überwachen und in Abhängigkeit davon eine Formatierung durchführen.
Folgende Situation: In Zelle B29 steht die Formel =SUMME(B21:B28). Wenn die Formel händisch überschrieben wird, sollen die Zellen B21 bis B28 in weißer Schrift und weißem Hintergrund formatiert werden. Ich habe mir dazu folgenden Code gebastelt der aber nicht funktioniert. Kann mir bitte jemand sagen woran dies liegt? Der Code steht in dem Tabellenblatt, wo die "Zellüberwachung" durchgeführt werden soll.

Public Sub Zellüberwachung()

    If Range("B29") <> "=IF(ISERROR(SUM(R[-8]C:R[-1]C)),"""",SUM(R[-8]C:R[-1]C))" Then
    Range("B21:B28").Select
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("B29").Select
End With

End If

End Sub

Vielen Dank im Voraus für eine Rückmeldung.

Viele Grüße

Ralf

  

Betrifft: AW: Zellüberwachung von: hary
Geschrieben am: 17.08.2012 10:21:23

Moin Ralf
So?
Code in den Code des Tabellenblattes.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$29" And Target.Count = 1 Then
 If Not Target.HasFormula Then
     With Range("B21:B28")
        .Interior.Pattern = xlSolid
        .Interior.PatternColorIndex = 1
        .Font.ThemeColor = xlThemeColorDark1
        .Font.TintAndShade = 0
        .Interior.PatternTintAndShade = 0
     End With
 End If
End If
End Sub

gruss hary


  

Betrifft: AW: Zellüberwachung von: Ralf
Geschrieben am: 17.08.2012 10:38:48

Hallo Hary,

wie immer eine schnelle und kompetente Lösung.
Ich habe den Code noch etwas erweitert, da die Zellen im Hintergrund nicht weiß wurden und mein Blattschutz erst noch aufgehoben werden musste.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$29" And Target.Count = 1 Then
 If Not Target.HasFormula Then
 Call Tabellenblatt_entsperren
     Range("B21:B28").Select
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    With Selection.Font
        .ThemeColor = xlThemeColorDark1
        .TintAndShade = 0
    End With
    Range("B29").Select
 Call Tabellenblatt_sperren
 End If
End If
End Sub
Viele Grüße und ein schönes Wochenende

Ralf


  

Betrifft: AW: Zellüberwachung von: hary
Geschrieben am: 17.08.2012 11:17:56

Hallo Ralf
Call,Call,Call,Call,Call,........

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$29" And Target.Count = 1 Then
 If Not Target.HasFormula Then
 Call Tabellenblatt_entsperren
     With Range("B21:B28")
        .Interior.Pattern = xlSolid
        .Interior.PatternColorIndex = xlAutomatic
        .Interior.ThemeColor = xlThemeColorDark1
        .Interior.TintAndShade = 0
        .Interior.PatternTintAndShade = 0
        .Font.ThemeColor = xlThemeColorDark1
        .Font.TintAndShade = 0
    End With
 Call Tabellenblatt_sperren
 End If
End If
End Sub

gruss hary


  

Betrifft: AW: Zellüberwachung von: Ralf
Geschrieben am: 17.08.2012 11:40:19

Hallo Hary,

ja, ich weiß. Aber was spricht dagegen?
Ich finde das eine elegante Lösung.
Ich habe das damals schon in der Berufsschule bei der CNC Programmierung so gelernt, wiederkehrende Prozesse in einem Unterprogramm abzulegen und diese dann nur entsprechend aufzurufen.

Vielleicht bin ich damals schon falsch geimpft worden. :-)

Viele Grüße

Ralf


  

Betrifft: Biste nich, denn das ist bei EventProx die ... von: Luc:-?
Geschrieben am: 17.08.2012 16:07:48

…eleganteste, weil universellste Lösung, Ralf! ;-)
Dadurch hast du deutlich weniger Probleme, falls du die EventProc mal erweitern musst. Es ist sogar sehr clever, wenn die von vornherein als Verteiler aufgebaut ist, nur hat sich das noch nicht bei allen Foristen rumgesprochen. Allerdings könnte Hary ggf auch nur das Call an sich meinen, denn das muss nicht unbedingt der aufgerufenen Proz vorangestellt wdn — mache ich aber auch, weil so deutlicher wird, worum's geht. (Und die Einrückungen sind natürlich recht willkürlich bzw exotisch… ;->)
Gruß Luc :-?