EXEL VBA Kommentare
Geizhals » Forum » Programmierung » EXEL VBA Kommentare (15 Beiträge, 172 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
...
Re(3): EXEL VBA Kommentare
30.01.2004, 00:02:49
hi,

soda, folgenden code in DieseArbeitsmappe einfügen...
makro läuft zwar bei jeder eingabe an der kompletten mappe, änderungen "greifen" aber nur im range A1:G30...(aber an jedem sheet!, müsstest bei set myrange statt activesheet das sheet mit bezeichnung anführen)


Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim myCell As Range
    Dim myRange As Range
    
    Set myRange = ActiveWorkbook.ActiveSheet.Range("A1", "G30")
    
    For Each myCell In myRange
        If GetCellColor(myCell) = 3 Then
            If Not myCell.Comment Is Nothing Then myCell.ClearComments
            myCell.AddComment "Dein Kommentar"
        Else: myCell.ClearComments
        End If
    Next

End Sub

Function GetCellColor(cell As Range) As Integer
    Dim i
    Dim myVal
    Dim myColor As Integer
    Dim done As Boolean
    On Error Resume Next
    Names("testRange").Delete
    On Error GoTo 0
    Application.ReferenceStyle = xlR1C1
    myVal = cell.Value
    myColor = cell.Interior.ColorIndex
    done = False
    For i = 1 To cell.FormatConditions.Count
        With cell.FormatConditions.Item(i)
            If .Type = 1 Then
                Select Case .Operator
                    Case xlBetween
                        If (myVal >= Evaluate(.Formula1) And myVal <= Evaluate(.Formula2)) _
                            Or (myVal <= Evaluate(.Formula1) And myVal >= Evaluate(.Formula2)) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlEqual
                        If myVal = Evaluate(.Formula1) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlGreater
                        If myVal > Evaluate(.Formula1) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlGreaterEqual
                        If myVal >= Evaluate(.Formula1) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlLess
                        If myVal < Evaluate(.Formula1) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlLessEqual
                        If myVal <= Evaluate(.Formula1) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlNotBetween
                        If myVal < Evaluate(.Formula1) Or myVal > Evaluate(.Formula2) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                    Case xlNotEqual
                        If myVal <> Evaluate(.Formula1) Then
                            myColor = .Interior.ColorIndex
                            done = True
                        End If
                End Select
            ElseIf .Type = 2 Then
                Names.Add Name:="testRange", RefersToR1C1Local:=.Formula1
                If Evaluate("testRange") Then
                    myColor = .Interior.ColorIndex
                    done = True
                End If
                Names("testRange").Delete
            Else
                MsgBox "Unbekannter Typ: " & .Type
                Exit Function
            End If
        End With
        If done Then Exit For
    Next
    Application.ReferenceStyle = xlA1
    GetCellColor = myColor
End Function


lg,
hariw

ps: stiegl schmeckt mir recht gut ;-)


The best way to speed up a PC is @ 9.81 m/sec².

Antworten PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung