Anzeige
Archiv - Navigation
1124to1128
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
Inhaltsverzeichnis

Makro - Fehlermeldung erzeugen

Makro - Fehlermeldung erzeugen
Helge
Guten Morgen,
ich suche ein Makro, welches eine Fehlermeldung erzeugt, wenn der Wert in Zelle B1 den Wert in Zelle A1 ueberschreitet. Kleinergleich ist zulaessig. In B1 steht eine Formel, die eigentliche zahl wird im worksheet2 eingetragen (A1, ws2). Kann das makro diese Zelle markieren, sodass ein anderer Wert eingegeben werden muss? Hab schon einige Makros ausprobiert, bislang erfolglos.
Danke fuer eure Hilfe
AW: Makro - Fehlermeldung erzeugen
20.12.2009 07:18:16
hary
Moin Helge
Code in den Code des Blattes wo A1 mit B1 verglichen wird.

Private Sub Worksheet_Calculate()
If Range("B1") > Range("A1") Then
MsgBox "Wert zu groß"
Worksheets("Tabelle2").Activate
Worksheets("Tabelle2").Range("A1").Select
End If
End Sub

gruss hary
AW: Makro - Fehlermeldung erzeugen
20.12.2009 07:38:41
Helge
Super Danke Hary, genau so wollte ich das.
Nur eine Kleinigkeit fehlt: Die Liste hat 3200 zeilen und wird in Zukunft noch erweitert. Dieses Makro gilt nur fuer die eine Zeile. Gibt es dafuer eine Loesung? Hatte ich vergessen zu erwaehnen. Ausserdem muss von untern nach oben geprueft werden.
Anzeige
AW: frage
20.12.2009 07:57:30
hary
Moin
In Tabelle 2 soll aber immer zu A1 gesprungen werden?
gruss hary
oder nur die letzte zelle owT.
20.12.2009 07:59:34
hary
.
AW: oder nur die letzte zelle owT.
20.12.2009 08:05:17
Helge
Hab den QT so umgeaendert, das sich alles in einem ws abspielt.
Momentan sieht es so aus:
Private Sub Worksheet_Calculate()
If Range("H5") > Range("I5") Then
MsgBox "Wert zu groß"
Range("G5").Select
End If
End Sub
Nun soll zeile fuer zeile geprueft werden und das am besten von unten nach oben. Wenn ich H5 in H5:H3000 aender kommt ein fehler.
AW: oder nur die letzte zelle owT.
20.12.2009 08:27:54
hary
Hi
dann versuch mal so. Koennen Werte mehrmal groesser sein?

Private Sub Worksheet_Calculate()
Dim rng As Range
Dim zelle As Long
Dim i As Long
zelle = Cells(Rows.Count, 8).End(xlUp).Row
For i = zelle To 5 Step -1
If Range("G" & i)  "" Then
If Range("H" & i) > Range("I" & i) Then
MsgBox "Wert zu groß"
Range("G" & i).Select
End If
End If
Next
End Sub

Anzeige
AW: oder nur die letzte zelle owT.
20.12.2009 10:18:55
Nepumuk
Hallo Hary,
ist das noch vernünftig, 3.200 mit 3.200 Zellen zu vergleichen, wenn nur eine geändert wurde?
Ich würde mal nachfragen, ob die Eingebezellen immer auf gleiche Weise mit den Vergleichszellen korrelieren und wenn dem so ist, nur die Eingaben zu prüfen (WorksheetChange).
Vorweihnachtliche Grüße
Nepumuk
AW: oder nur eine zelle
20.12.2009 11:02:00
hary
Moin Nepumuk
Hast Recht. Deshalb hatte ich ja auch gefragt, ob's evtl nur die letzte ist oder was passieren soll wenn mehrere(hier waere markieren sinnvoller) groesser sind. Sonst waere das einfachste mit ActiveCell.row und Change Ereigniss.
Gruss hary
AW: oder nur eine zelle
20.12.2009 11:13:37
Helge
Hey jetzt ist es perfekt. Habe die Automatische berechnung sowie so deaktiviert und mache das manuell. Zur eingabe: Es werden manchmal bis zu 100 zeilen hizugefuegt und dann ueber F9 berechnet. Also ist es es notwendig, das zum mindest alle veraenderten zeilen geprueft werden. Denke das es da einfacher ist alles zu pruefen oder ?
Nochmal riesen Dank fuer die Hilfe und einen schoenen Sonntag.
Anzeige
AW: oder nur eine zelle
20.12.2009 12:29:03
Helge
Hab gerade mal 10 Fehler in die Liste eingebaut. Sie werden alle angezeigt, jedoch kann ich sie nicht direkt aendern. So bald ich bestaetige springt er zum naechsten Fehler. Gibt es dafuer noch einen zusatz, ohne die Tabelle nach jeder verbesserung neu zu berechnen?
AW: oder nur eine zelle
20.12.2009 13:35:37
hary
hallo Helge
Genau das hatte ich gemeint. Hilft Dir evtl. Farblich markiert weiter. Farbe wird bei neuberechnung geloest.
teste mal

Private Sub Worksheet_Calculate()
Range("G:G").Interior.ColorIndex = xlNone
Dim zelle As Long
Dim i As Long
zelle = Cells(Rows.Count, 8).End(xlUp).Row
For i = zelle To 5 Step -1
If Range("G" & i)  "" Then
If Range("H" & i) > Range("I" & i) Then
Range("G" & i).Interior.ColorIndex = 6
End If
End If
Next
End Sub

gruss hary
Anzeige
AW: korrektur
20.12.2009 13:41:10
hary
hallo Helge
habe gepennt
muss so sein.

Private Sub Worksheet_Calculate()
Dim zelle As Long
Dim i As Long
Range("G:G").Interior.ColorIndex = xlNone
zelle = Cells(Rows.Count, 8).End(xlUp).Row
For i = zelle To 5 Step -1
If Range("G" & i)  "" Then
If Range("H" & i) > Range("I" & i) Then
Range("G" & i).Interior.ColorIndex = 6
End If
End If
Next
End Sub

gruss hary
AW: Makro - Fehlermeldung erzeugen
20.12.2009 14:01:29
Helge
jop, jetzt ist es zu 100% geloest. Hab die msg noch eingebaut, damit benutzer eine Fehlermeldung/beschreibung bekommen. Es muessen naemlich 13 Felder ausgefuellt werden. Dank dir Hary, ich hab heute wieder einiges dazu gelernt.
Anzeige
AW: bitte,danke fuer die Rueckmeldung owT.
20.12.2009 14:07:33
hary
.

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige