Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Makro - Fehlermeldung erzeugen | Herbers Excel-Forum


Betrifft: Makro - Fehlermeldung erzeugen von: Helge Kuehn
Geschrieben am: 20.12.2009 06:28:33

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

  

Betrifft: AW: Makro - Fehlermeldung erzeugen von: hary
Geschrieben am: 20.12.2009 07:18:16

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


  

Betrifft: AW: Makro - Fehlermeldung erzeugen von: Helge Kuehn
Geschrieben am: 20.12.2009 07:38:41

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.


  

Betrifft: AW: frage von: hary
Geschrieben am: 20.12.2009 07:57:30

Moin
In Tabelle 2 soll aber immer zu A1 gesprungen werden?
gruss hary


  

Betrifft: oder nur die letzte zelle owT. von: hary
Geschrieben am: 20.12.2009 07:59:34

.


  

Betrifft: AW: oder nur die letzte zelle owT. von: Helge Kuehn
Geschrieben am: 20.12.2009 08:05:17

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.


  

Betrifft: AW: oder nur die letzte zelle owT. von: hary
Geschrieben am: 20.12.2009 08:27:54

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



  

Betrifft: AW: oder nur die letzte zelle owT. von: Nepumuk
Geschrieben am: 20.12.2009 10:18:55

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


  

Betrifft: AW: oder nur eine zelle von: hary
Geschrieben am: 20.12.2009 11:02:00

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


  

Betrifft: AW: oder nur eine zelle von: Helge Kuehn
Geschrieben am: 20.12.2009 11:13:37

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.


  

Betrifft: AW: oder nur eine zelle von: Helge Kuehn
Geschrieben am: 20.12.2009 12:29:03

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?


  

Betrifft: AW: oder nur eine zelle von: hary
Geschrieben am: 20.12.2009 13:35:37

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


  

Betrifft: AW: korrektur von: hary
Geschrieben am: 20.12.2009 13:41:10

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


  

Betrifft: AW: Makro - Fehlermeldung erzeugen von: Helge Kuehn
Geschrieben am: 20.12.2009 14:01:29

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.


  

Betrifft: AW: bitte,danke fuer die Rueckmeldung owT. von: hary
Geschrieben am: 20.12.2009 14:07:33

.


Beiträge aus den Excel-Beispielen zum Thema "Makro - Fehlermeldung erzeugen"