1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

Excel Makro/Modul/VBA + MsgBox + bedingte Formatierung

Discussion in 'Office-Programme' started by pp17, Jun 10, 2009.

Thread Status:
Not open for further replies.
  1. pp17

    pp17 Byte

    Hallo Excel VBA/Makro/Modul Experten und Expertinnen,
    erst mal hoffe ich, dass ich hier im richtigen Forum bin.
    Ich möchte für eine bestimmte Zelle (E24) abfangen wenn der Wert <> 165 ist. Dann soll eine MsgBox ausgegeben werden und der falsche Inhalt soll in Rot und durchgestrichen sein. Wenn nichts in der Zelle steht und man mit den Pfeilen durch diese Zelle geht, soll auch keine MsgBox angezeigt werden.
    Diese Abfrage wird später in der Tabelle für mehrere nicht zusammenhängende Zellen stehen.
    Hatte mir folgendes zusammengesucht. Leider funktioniert es nicht.

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Zelle E24 = Cells(24, 5)
    If (Sheets("Tabelle1").Cells(24, 5) = 165) Then
    MsgBox "..."
    End If
    End Sub

    Hat jemand eine Idee? Bin über jeden Tipp dankbar.
    Peter
     
  2. Urs2

    Urs2 Megabyte

    Hallo Peter,

    Das SelectionChange-Ereignis tritt ein, wenn eine andere Zelle markiert wird >>> hier unbrauchbar.

    Das Change-Ereignis wird durch die Aenderung eines Zellinhalts ausgelöst >>> hier vielleicht brauchbar >>>
    Code:
    Private Sub Worksheet_Change(ByVal Target As Range)
    
        If Not Application.Intersect(Target, Cells(24, 5)) Is Nothing Then
            If Target.Value = 165 Then
                Target.Font.Color = vbRed
                Target.Font.Strikethrough = True
                x = MsgBox("Das ist passiert...", vbOKOnly, "Hallo...")
            Else
                Target.Font.Color = vbBlack
                Target.Font.Strikethrough = False
            End If
        End If
    
    End Sub
    

    Das "vielleicht" >>> Das Change-Ereignis spricht nur auf eine externe Aenderung in der Zelle an.
    Also von Hand eingetippt, oder durch ein Makro in eine Zelle eingefügt.


    Wenn die Aenderung durch einen Bezug oder eine Formel in der Zelle selbst erfolgt, dann geht es nur so >>>
    Code:
    Private Sub Worksheet_Calculate()
    
    With Cells(24, 5)
        If .Value = 165 Then
                .Font.Color = vbRed
                .Font.Strikethrough = True
                x = MsgBox("Das ist passiert...", vbOKOnly, "Hallo...")
        Else
                .Font.Color = vbBlack
                .Font.Strikethrough = False
        End If
    End With
    
    End Sub
    
    Die Makros müssen im Unterordner des betroffenen Tabellenblatts stehen.


    Gruss Urs
     
  3. pp17

    pp17 Byte

    Hallo Urs,

    vielen Dank. Klappt alles bestens.
     
Thread Status:
Not open for further replies.

Share This Page