Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.04.2024 18:57:33
17.04.2024 16:56:58
Anzeige
Archiv - Navigation
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
588to592
588to592
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Vergleich Zelle A mit Zelle B Ergebnis in msgBox

Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 10:41:53
mueller
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

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 10:58:31
Rolf
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

AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 11:33:30
mueller
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
Anzeige
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 13:46:58
Rolf
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

Anzeige
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 18:35:04
Reinhard
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
Anzeige
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 20:10:09
Rolf
Hallo Reinhard,
1. Was willst du an welcher Stelle womit vergleichen?
2. Gibbet keinen
hG
Rolf
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 20:34:11
Reinhard
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
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 22:01:57
Rolf
Hallo Reinhard,
du änderst einfach die Abfrage

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

hG
Rolf
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
28.03.2005 22:57:16
Reinhard
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
Anzeige
AW: Vergleich Zelle A mit Zelle B Ergebnis in msgBox
29.03.2005 09:08:55
Rolf
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

Nachtrag
29.03.2005 09:42:49
Rolf
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
AW: Nachtrag
29.03.2005 10:34:43
Reinhard
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
Anzeige
Hilfe beanspruchen + gewähren...
29.03.2005 11:25:15
Rolf
...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)
AW: Hilfe beanspruchen + gewähren...
30.03.2005 11:32:09
Reinhard
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
Anzeige
Energie sparen...
31.03.2005 09:44:20
Rolf
...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

Anzeige
AW: Energie sparen...
02.04.2005 19:13:57
Reinhard
Danke

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige