Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
300to304
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
300to304
300to304
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Private Sub Worksheet_Change(ByVal Target as range

Private Sub Worksheet_Change(ByVal Target as range
28.08.2003 15:49:28
Holger
Hallo,
ich habe ein Problem, wo ich einfach nicht weiter komme.
Erstmal folgende Programmierung (die Formel habe ich vereinfacht):


Private Sub Worksheet_Change(ByVal Target As Range)
If Cells(1, 1) - (Cells(1, 2)> 100 Then
Dim Mldg, Stil, Titel, Antwort
Mldg = "TEXT"
Stil = vbOKOnly + vbCritical + vbDefaultButton1
Titel = "Überprüfen Sie bitte Ihre Eingabe!"
Antwort = MsgBox(Mldg, Stil, Titel, Hilfe, Ktxt)
End If
End Sub


Folgendes Problem: Der User macht in der Tabelle viele Eingaben, z. B. in den Spalten A und C. In den Spalten B und D stehen Planwerte. Wenn nun der eingetragene Wert um z. B. 100 differiert, soll dem User eine Meldung gezeigt werden.
* Wie kann ich es erreichen, die Programmierung so zu ändern, dass für einzelne ausgewählte Zellen eine Eingabeprüfung vorgenommen wird?
* Gibt es in VBA einen Befehl für den "Betrag" von 100? Sprich, die Differenz kann auch - 100 betragen, deshalb wäre "Betrag von 100" eine Hilfe.
Gruß an alle, Holger

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target as range
28.08.2003 17:52:37
ChrisL
Hi Holger


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column <= 2 Then
If Abs(Cells(Target.Row, 1) - Cells(Target.Row, 2)) > 100 Then
MsgBox "Überprüfen Sie bitte Ihre Eingabe!", vbOKOnly + vbCritical + vbDefaultButton1, "Titel"
Target.Select
End If
End If
End Sub

Gruss
Chris
AW: Private Sub Worksheet_Change(ByVal Target as range
29.08.2003 09:07:35
Holger
Hallo Chris,
vielen Dank für Deine Hilfe. Leider ist es nicht genau das, was ich suchte. Liegt daran, dass ich es nicht eindeutig erklärt hatte. Vielleicht kannst Du mir aber noch weiter helfen.
In Deiner Programmierung (habe ich noch mal unten eingefügt) werden alle Zellen in Spalte 1 und 2 verglichen. Was ich benötige, ist ein Vergleich von Zelle zu Zelle. In der Zeile 1 muss z. B. eine andere Forderung hinterlegt werden als in Zeile 2 u.s.w.
Weiterhin muss dann der Wert in der Spalte 2 mit der in der Spalte 3 verglichen werden. Insgesamt sind in 11 Zeilen und 4 Spalten die Werte miteinander zu vergleichen, aber pro Vergleich muss eine seperate Forderung (z. B. > 100 oder auch mal >10 %) hinterlegt werden.
Kannst Du mir helfen???
Gruß, Holger


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Column <= 2 Then
If Abs(Cells(Target.Row, 1) - Cells(Target.Row, 2)) > 100 Then
MsgBox "Überprüfen Sie bitte Ihre Eingabe!", vbOKOnly + vbCritical + vbDefaultButton1, "Titel"
Target.Select
End If
End If
End Sub

Anzeige
AW: Private Sub Worksheet_Change(ByVal Target as range
29.08.2003 10:34:34
ChrisL
Hi Holger

Du kannst soviele Bedingungen machen wie du willst... z.B.


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$B$1" Or Target.Address = "$C$1" Then
If Range("B1") - Range("C1") > 100 Then
MsgBox "Überprüfen Sie bitte Ihre Eingabe!", vbOKOnly + vbCritical + vbDefaultButton1, "Titel"
Target.Select
End If
End If
If Target.Address = "$B$2" Or Target.Address = "$C$2" Then
If Range("B2") - Range("C2") > 0.1 Then
MsgBox "Überprüfen Sie bitte Ihre Eingabe!", vbOKOnly + vbCritical + vbDefaultButton1, "Titel"
Target.Select
End If
End If
' usw.
End Sub

Gruss
Chris
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target as range
29.08.2003 11:17:17
Holger
Hallo Chris,
fast am Ziel!!! Das einzige Problem, was ich jetzt noch habe, ist, dass sich die zu vergleichenden Werte nicht in benachbarten Spalten befinden. Es ist immer noch eine andere Spalte dazwischen. Das hatte ich bisher nicht beschrieben, weil ich es nicht für wichtig erachtete, aber die Programmierung funktioniert nur (zumindest bei mir) bei 2 benachbarten Spalten. Das Programm sieht bei also so aus:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$A$1" Or Target.Address = "$C$1" Then
If Range("A1") - Range("C1") > 100 Then
MsgBox "Überprüfen Sie bitte Ihre Eingabe!", vbOKOnly + vbCritical + vbDefaultButton1, "Titel"
Target.Select
End If
End If
'viele andere Anforderungen folgen hier noch
End Sub


Kannst Du mir noch einmal helfen??? Wäre absolut spitze!!!!!!!!!!!!!!!!!!!!!!

Danke Dir schon mal für Deine tolle Hilfe.
Ciao und Gruß aus Braunschweig
Anzeige
AW: Private Sub Worksheet_Change(ByVal Target as range
29.08.2003 12:00:32
Holger
Hallo Chris,
Problem gefunden! Weiß zwar nicht, wo der Fehler lag, habe aber die gesamte Tabelle in eine neue kopiert, da ging es dann auch Spaltenübergreifend.
Super und vielen Dank für Deine Hilfe. Da wäre ich nie drauf gekommen!!!!
Ciao, Holger
AW: Private Sub Worksheet_Change(ByVal Target as range
01.09.2003 16:55:07
Holger
Hallo Chris,
Deine Tipps haben mich echt weiter gebracht. Dachte auch, ich hätte es nun verstanden, stolpere nun aber über ein Problem. Zunächst meine jetzige Programmierung:


Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Zeile 9
If Target.Address = "$K$9" Or Target.Address = "$I$9" Then
If Abs((Range("k9") - 2 * Range("i9")) / (2 * Range("I9"))) > 0.1 Then
MsgBox "Text", vbOKOnly + vbCritical + vbDefaultButton1, "Überprüfen Sie bitte Ihre Eingabe!"
Target.Select
End If
End If
'Zeile 10
If Target.Address = "$K$10" Or Target.Address = "$I$10" Then
If Abs((Range("k10") - 2 * Range("i10")) / (2 * Range("I10"))) > 0.15 Then
MsgBox "Text", vbOKOnly + vbCritical + vbDefaultButton1, "Überprüfen Sie bitte Ihre Eingabe!"
Target.Select
End If
End If
End Sub


Nun möchte ich wieder die Zeile 9 vergleichen, und zwar die Zellen in den Spalten M und K. Folgende Programmierung dachte ich müsste funktionieren, tut's aber nicht:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'Zeile 9
If Target.Address = "$K$9" Or Target.Address = "$I$9" Then
If Abs((Range("k9") - 2 * Range("i9")) / (2 * Range("I9"))) > 0.1 Then
MsgBox "Text", vbOKOnly + vbCritical + vbDefaultButton1, "Überprüfen Sie bitte Ihre Eingabe!"
Target.Select
End If
End If
If Target.Address = "$m$9" Or Target.Address = "$k$9" Then
If Abs((Range("m9") - 2 * Range("k9")) / (2 * Range("k9"))) > 0.1 Then
MsgBox "Text", vbOKOnly + vbCritical + vbDefaultButton1, "Überprüfen Sie bitte Ihre Eingabe!"
Target.Select
End If
End If
'Zeile 10
If Target.Address = "$K$10" Or Target.Address = "$I$10" Then
If Abs((Range("k10") - 2 * Range("i10")) / (2 * Range("I10"))) > 0.15 Then
MsgBox "Text", vbOKOnly + vbCritical + vbDefaultButton1, "Überprüfen Sie bitte Ihre Eingabe!"
Target.Select
End If
End If
End Sub


Was mache ich falsch??? Kannst Du mir (ein letztes Mal) helfen???
Gruß, Holger
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige