Vergleich Zelle A mit Zelle B Ergebnis in msgBox

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: mueller
Geschrieben am: 28.03.2005 10:41:53

Hallo Zusammen,

Ich bin dabei eine Zeiterfassungstabelle zu erstellen. Die Tabelle besteht aus 2 Spalten mit jeweils 16 Zellen. Jetzt möchte ich, wenn die Summe aus Spalte B (Zelle1) größer ist als die Summe aus Spalte A (Zelle1) ein msgBox erscheint, und meldet ( siehe makro )

Private Sub Worksheet_Change(ByVal Target As Range)
 Dim date§
 Date = Range("C14")
     If Range("ZL1").Value < Range("ErsSu1") Then
        ActiveSheet.Unprotect
        
    With Range("Ers1").Interior
        .ColorIndex = 3
        .Pattern = xlSolid
        ActiveSheet.Protect
    End With
  Debug.Print MsgBox("Es wurden am   " & Format(Date, "DD.MM.YYYY   ") _ 
  & Range("ZL1") & " Stunden ZL eingetragen" + Chr(13) + "" + Chr(13) + _
  "aber " & Range("Ers1") & " Stunden Erschwernisse " _
 & vbLf & "" & vbLf & "bitte ändern" + Chr(13) + "", vbCritical, _
    Application.UserName)
    Else
    ActiveSheet.Unprotect
    With Range("Ers1").Interior
        .ColorIndex = xlNone
        .Pattern = xlSolid
        ActiveSheet.Protect
    End With
    End If
End Sub


Das Makro funktioniert. Aber damit es in allen 16 zellen funtioniert müsste ich es 16 mal schreiben. Ich habe es versucht, nach 3 mal war Schluß und das Makro hat nichts mehr gemacht.
Vielleicht kann mir ja jemand weiterhelfen.

Gruß aus dem Norden

Reinhard
Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Rolf Beißner
Geschrieben am: 28.03.2005 10:58:31

Hallo Reinhard,


meinst du so?

fG
Rolf


Sub zelle_grösser
   dim bereich as range, zelle as range
   set bereich =activesheet.range("A1:A16")
   for each zelle in bereich
       if zelle.offset(0,1) > zelle then
           msgbox zelle.offset(0,1)
       end if
   next
End Sub



Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: mueller
Geschrieben am: 28.03.2005 11:33:30

Hallo Rolf,

vielen dank für Deine Mühe.Ich habe die Mappe auf den Server geladen.

https://www.herber.de/bbs/user/20238.xls

Es dreht sich hier um die Zelle E14 und T14.
Webnn du T14 einen höheren Wert eingibts als in E14 erscheint die msgBox. Das ist auch richtig so. Nur soll es von E14 bis E29 bzw. von T14 bis T29 funktionieren.
Vielleicht kannst Du damit etwas anfangen.

Gruss Reinhard


Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Rolf Beißner
Geschrieben am: 28.03.2005 13:46:58

Hallo Reinhard,

hier mal ein Vorschlag zum grundsätzlichen Vorgehen,
den du sicher noch ein wenig optimieren musst.

fG
Rolf

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim zelle As Range, erschwer As Range
    Dim date§
    Date = Range("C14")
    If Target.Column = 20 And Target.Row >= 14 And Target.Row <= 29 Then
        Set zelle = Target.Offset(0, -15)
        Set erschwer = Union(zelle.Offset(0, 15), zelle.Offset(0, 18), zelle.Offset(0, 21))
        If zelle.Offset(0, 15) > zelle Then
            
            With erschwer.Interior
                 .ColorIndex = 3
                 .Pattern = xlSolid
             End With
            MsgBox "Es wurden am   " & Format(Date, "DD.MM.YYYY   ") & zelle & " Stunden ZL eingetragen" + Chr(13) + "" + Chr(13) + _
             "aber " & zelle.Offset(0, 15) & " Stunden Erschwernisse " _
             & vbLf & "" & vbLf & "bitte ändern" + Chr(13) + "", vbCritical, Application.UserName
         Else
             ActiveSheet.Unprotect
             With erschwer.Interior
                 .ColorIndex = xlNone
                 .Pattern = xlSolid
             End With
        End If
    End If
    
End Sub



Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Reinhard Müller
Geschrieben am: 28.03.2005 18:35:04

Hallo Rolf,

vielen Dank für Deine Mühen. Funktioniert gut das Makro. Kannst Du mir aber noch 2 Fragen beantworten?

1. Wenn ich als Wert für die Überprüfung die Summe von den 3 Zellen

Union(zelle.Offset(0, 15), zelle.Offset(0, 18), zelle.Offset(0, 21))

nehme, was muß ich da ändern? Jetzt nehme ich ja den Wert aus Spalte 20. Ich habe
schon versucht in Spalte 51 eine Zelle mit der Formel =SUMME(T14;W14;Z14) zu
besetzen, und dann das Makro dementsprechend zurück zu rechnen, klappt aber nicht.
Was mache ih da falsch?

2. Es gibt einmal die Anweisung + Chr(13) + und die Anweisung & vbLf & wo liegt der
Unteschied?



Private Sub Worksheet_Change(ByVal Target As Range)
    Dim zelle As Range, erschwer As Range, Datum As Range
    
ActiveSheet.Unprotect
  If Target.Column = 20 And Target.Row >= 14 And Target.Row <= 29 Then
        Set zelle = Target.Offset(0, -15)
        Set erschwer = Union(zelle.Offset(0, 15), zelle.Offset(0, 18), zelle.Offset(0, 21))
        Set Datum = Target.Offset(0, -17)
        If zelle.Offset(0, 15) > zelle Then
            
            With erschwer.Interior
                 .ColorIndex = 3
                 .Pattern = xlSolid
             End With
            MsgBox "Es wurden am   " & Format(Datum, "DD.MM.YYYY   ") & zelle & " Stunden ZL eingetragen" + Chr(13) + "" + Chr(13) + _
             "aber " & zelle.Offset(0, 15) & " Stunden Erschwernisse " _
             & vbLf & "" & vbLf & "bitte ändern" + Chr(13) + "", vbCritical, Application.UserName
         Else
             ActiveSheet.Unprotect
             With erschwer.Interior
                 .ColorIndex = xlNone
                 .Pattern = xlSolid
             End With
        End If
    End If
End Sub



Vielen Dank nochmals für Deine Bemühungen.

Grüße aus dem Norden

Reinhard


Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Rolf Beißner
Geschrieben am: 28.03.2005 20:10:09

Hallo Reinhard,

1. Was willst du an welcher Stelle womit vergleichen?
2. Gibbet keinen

hG
Rolf


Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Reinhard Müller
Geschrieben am: 28.03.2005 20:34:11

Hallo Rolf

ich habe die Mappe mit einer Erklärung dazu angehängt. Ich hoffe Du kannst es verstehen was ich meine.

https://www.herber.de/bbs/user/20255.xls

Nochmals vielen Dank für Deine Bemühungen.

Gruß Reinhard


Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Rolf Beißner
Geschrieben am: 28.03.2005 22:01:57

Hallo Reinhard,

du änderst einfach die Abfrage

Sub ...
...
If Application.Sum(erschwer) > zelle Then
...
End Sub


hG
Rolf


Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Reinhard Müller
Geschrieben am: 28.03.2005 22:57:16

Hallo Rolf

leider funktioniert die Abfrage nicht. Wenn ich einen Wert in die zweite Zelle ( 18 ) oder die dritte Zelle ( 21 ) eingebe tut sich nichts. Nur wenn ich einen Wert in die erste Zelle ( 15 ) eingebe erscheint die msgBox. Es tut mir leid, dass ich Dich den ganzen Tag beschäftigt habe.
Anbei den geänderten Code.


Private Sub Worksheet_Change(ByVal Target As Range)
    Dim zelle As Range, erschwer As Range, Datum As Range
        If Target.Column = 20 And Target.Row >= 14 And Target.Row <= 29 Then
        Set zelle = Target.Offset(0, -15)
        Set erschwer = Union(zelle.Offset(0, 15), zelle.Offset(0, 18), zelle.Offset(0, 21))
        Set Datum = Target.Offset(0, -17)
        If Application.Sum(erschwer) > zelle Then
 
            With erschwer.Interior
                 .ColorIndex = 3
                 .Pattern = xlSolid
             End With 
            MsgBox "Es wurden am   " & Format(Datum, "DD.MM.YYYY   ") & zelle & " Stunden ZL eingetragen" + Chr(13) + "" + Chr(13) + _
             "aber " & Application.Sum(erschwer) & " Stunden Erschwernisse " _
             & vbLf & "" & vbLf & "bitte ändern" + Chr(13) + "", vbCritical, Application.UserName
         Else
             With erschwer.Interior
                 .ColorIndex = xlNone
                 .Pattern = xlSolid
             End With
        End If
    End If
End Sub


Vielleicht weißt Du ja Abhilfe.

Bis dann reinhard




Bild


Betrifft: AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox von: Rolf Beißner
Geschrieben am: 29.03.2005 09:08:55

Hallo Reinhard,

dann müssen wir diese Felder halt noch einbeziehen

hG
Rolf


Private Sub Worksheet_Change(ByVal Target As Range)
  ...
   If Target.Column = 20 Or Target.Column = 23 Or Target.Column = 26 _
                             And Target.Row >= 14 And Target.Row <= 29 Then
  ...
End Sub



Bild


Betrifft: Nachtrag von: Rolf Beißner
Geschrieben am: 29.03.2005 09:42:49

Hallo Reinhard,

bitte auch noch das ändern

Set zelle = Cells(Target.Row, 5),

da die Verschiebung mit "Offset"
ja nur bei Spalte 20 zum korrekten Ergebnis führt.

hG
Rolf


Bild


Betrifft: AW: Nachtrag von: Reinhard Müller
Geschrieben am: 29.03.2005 10:34:43

Hallo Rolf,

ich weiß gar nicht wie ich Dir danken kann. Also ein riesiges dickes Dankeschön.
Es klappt alles super. Ich hatte in der ersten Zeile des Makros

If Target.Column = 20

versucht

If Target.Column = 20 And Target.Column = 23

zu sagen hat natürlich nicht geklappt. Mir war auch bewußt, dass er dann nicht mehr über Offset zurückzählen kann.
Das Or war es.

Aber sage doch einmal, warum machst Du das? Dich hinsetzen und Deine Freizeit für andere zu opfern. Super

Also nochmals Dankeschön.


Gruß aus Niedersachsen

Reinhard


Bild


Betrifft: Hilfe beanspruchen + gewähren... von: Rolf Beißner
Geschrieben am: 29.03.2005 11:25:15

...eine Hand wäscht die andere

Hallo Reinhard,

freut mich, dass jetzt alles klappt.

Frohes Schaffen + herzl.Grüße aus Hessen
Rolf

ps
Vergiss nicht, auch das Datum umzudefinieren
Set Datum = Cells(Target.Row,2)


Bild


Betrifft: AW: Hilfe beanspruchen + gewähren... von: Reinhard Müller
Geschrieben am: 30.03.2005 11:32:09

Hallo Rolf

ich habe ein wenig mit mir gehadert, ob ich Dich noch einmal belästigen soll?
Wie Du siehst, habe ich mich entschieden.
Ich habe noch eine Frage.

Wenn ich einen Wert in zelle ( z.B. 7 ) habe, und eine Summe in erschwer ( z.B. 8) erscheint die msgBox. Das ist korrekt. Erhöhe ich den Wert in zelle auf 9 müßte eigentlich da der Wert größer ist als 8 der colorIndex verschwinden.
Macht er aber nicht. Aktiviere ich eine der Zellen in erschwer dann führt er das Makro aus.

Gibt eine Funktion die die Zellen aktualiesiert?

https://www.herber.de/bbs/user/20362.xls

Vielleicht weißt Du ja Rat?

Übrigens eine Hand wäscht die Andere - Ich bin von Beruf Wärme- Kälte- Schallschutz Isolierermeister. Falls Du Fragen hast zum Ernergieeinsparen in Häusern oder andere Fragen die mit dem Thema Energie - Haus zu tun haben ; kein Problem.

meine Homepage www.mueller-scheessel.de

Gruß aus dem sonnigen Rotenburg

Reinhard


Bild


Betrifft: Energie sparen... von: Rolf Beißner
Geschrieben am: 31.03.2005 09:44:20

...ist bei meinem alten Fertighaus sonne Sache...

Hallo Reinhard,

hier noch mal der komplette Code

Herzl.Grüße + mach dir keinen Kopf
Rolf

Private Sub worksheet_selectionChange(ByVal Target As Range)
    
    Dim zelle As Range, erschwer As Range, Datum As Range
    If Target.Column = 5 Or Target.Column = 20 Or Target.Column = 23 Or Target.Column = 26 _
                         And Target.Row >= 14 And Target.Row <= 29 Then
        
        Set zelle = Cells(Target.Row, 5)
        Set erschwer = Union(zelle.Offset(0, 15), zelle.Offset(0, 18), zelle.Offset(0, 21))
        Set Datum = Cells(Target.Row, 2)
        If Application.Sum(erschwer) > zelle Then
    
            With erschwer.Interior
                 .ColorIndex = 3
                 .Pattern = xlSolid
             End With
    
            MsgBox "Es wurden am   " & Format(Datum, "DD.MM.YYYY   ") & zelle & " Stunden ZL eingetragen" + Chr(13) + "" + Chr(13) + _
             "aber " & Application.Sum(erschwer) & " Stunden Erschwernisse " _
             & vbLf & "" & vbLf & "bitte ändern" + Chr(13) + "", vbCritical, Application.UserName
         Else
             With erschwer.Interior
                 .ColorIndex = xlNone
                 .Pattern = xlSolid
             End With
        End If
    End If
End Sub



Bild


Betrifft: AW: Energie sparen... von: Reinhard Mü+ller
Geschrieben am: 02.04.2005 19:13:57

Danke


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Vergleich Zelle A mit Zelle B Ergebnis in msgBox"