Microsoft Excel

Herbers Excel/VBA-Archiv

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

Makro verkürzen

Betrifft: Makro verkürzen von: Burghard
Geschrieben am: 06.07.2015 22:18:39

Hallo,

ich möchte mein Makro gerne verkürzen. Geht das mit Case? Ich würde auch gerne, dass die Neuberechnung nur im Bereich A2 bis L5 und nicht über das ganze Tabellenblatt stattfindet. Da müsste wohl der Range-Bereich angegeben werden. Hilfe wäre nett.

Private Sub Worksheet_Calculate()

Application.ScreenUpdating = False

If WorksheetFunction.Sum(Range("A2:A5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("B2:B5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("C2:C5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("D2:D5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("E2:E5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("F2:F5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("G2:G5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("H2:H5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("I2:I5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("J2:J5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("K2:K5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If
If WorksheetFunction.Sum(Range("L2:L5")) > 1000 Then
  MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
End If

Application.ScreenUpdating = True
End Sub
Grüße Burghard

  

Betrifft: AW: Makro verkürzen von: Sepp
Geschrieben am: 06.07.2015 22:28:48

Hallo Burhard,

und wo liegt der tiefere Sinn des ganzen?

Private Sub Worksheet_Calculate()
  Dim lngCol As Long
  
  For lngCol = 1 To 12
    If WorksheetFunction.Sum(Range(Cells(2, lngCol), Cells(5, lngCol))) > 1000 Then
      MsgBox "Höchstbetrag von 1.000 € wird überschritten!"
      Exit For
    End If
  Next
  
End Sub



Gruß Sepp



  

Betrifft: AW: Makro verkürzen von: Burghard
Geschrieben am: 07.07.2015 11:04:45

Hallo Sepp,

danke für Deine Lösung. Es gibt aber noch ein Problem. Ich bin am Lernen und wollte sehen, wie man den Code kürzen kann.
Das Problem bei Deiner Lösung ist, dass die MessageBox aufgeht, wenn ich unterhalb des Bereichs "A2:L5" etwas in eine Zelle eintrage.
Mein Vorgehen:
Ich trage zum Beispiel in Zelle A30 und A31 einen Betrag ein, diese werden monatlich in Zelle A2 summiert.
Ich trage zum Beispiel in Zelle F30 und F31 einen Betrag ein, diese werden monatlich in Zelle A3 summiert.
Ich trage zum Beispiel in Zelle H30 und H31 einen Betrag ein, diese werden monatlich in Zelle A4 summiert.
Ich trage zum Beispiel in Zelle J30 und J31 einen Betrag ein, diese werden monatlich in Zelle A5 summiert.

Das Makro soll jetzt die Beträge in den Zellen A2:A5 summieren und eine Meldung ausgeben, wenn die Summe größer als 1000 ist.

Gibt es eine Lösung das Calculate Ereignis einzugrenzen?

Grüße Burghard


  

Betrifft: AW: Makro verkürzen von: Sepp
Geschrieben am: 07.07.2015 11:11:02

Hallo Burghard,

dann nimm doch das Change-Ereignis, da kannst du den Bereich eingrenzen.

Gruß Sepp