Anzeige
Archiv - Navigation
1600to1604
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

MsgBox nur einmal anzeigen

MsgBox nur einmal anzeigen
18.01.2018 08:41:13
Philip
Hallo zusammen
Ich habe einen Code geschrieben mit dem ich ein Paar Zelle zusammen rechne und dann eine MsgBox öffne. Nun möchte ich das die Msg box nur einmal angezeigt wird wenn der Wert ereicht wird.
Wenn möglich möchte ich die MsgBox bei 100,200,300,400,500,600,700 usw.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim summe As String
summe = Application.sum(Range("AB41:AB46"))
If summe > 100 Then
MsgBox ("Probe")
End If
End Sub

Gruss Philip

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
If Summe Mod 100 = 0 Then MsgBox
18.01.2018 08:45:53
RPP63
ohne weiteren Text
Gruß Ralf
AW: MsgBox nur einmal anzeigen
18.01.2018 08:47:40
UweD
Hallo
in ein Normales Modul
Public Nureinmal As Boolean
und folgende Änderung
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim summe As String
    summe = Application.Sum(Range("AB41:AB46"))
    If summe > 100 And Not Nureinmal Then
        MsgBox ("Probe")
        Nureinmal = True
    End If
End Sub
LG UweD
Anzeige
AW: MsgBox nur einmal anzeigen
18.01.2018 08:57:34
Philip
Hallo Uwe
Danke dir für deine Lösung.
Eine Frage habe ich noch, ist es möglich dass die MsgBox bei 200,300,400,usw. auch erscheint?
Und das in den selben Code gepackt.
Gruss Philip
AW: MsgBox nur einmal anzeigen
18.01.2018 08:58:07
UweD
das mit den 100,200,300 hatte ich noch überlesen
in ein normales Modul
Public Nureinmal As Integer
und ins Blatt
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Summe As Integer
    Summe = Application.Sum(Range("AB41:AB46"))
    If Summe Mod 100 = 0 And Summe > Nureinmal Then
        MsgBox ("Probe")
        Nureinmal = Summe
    End If
End Sub
LG UweD
Anzeige
AW: MsgBox nur einmal anzeigen
18.01.2018 09:04:32
Philip
Hallo
Funktioniert so wie ich es beschrieben habe, nur habe ich bemerkt dass ich es faltsch beschrieben habe.
die MsgBox soll einmal kommen wenn ich über 100,200,300,400,usw. komme nicht nur wenn ich genau diese Zahlen bekomme.
Ich hoffe du kannst mir trotzden noch weiter helfen.
Gruss Philip
AW: MsgBox nur einmal anzeigen
18.01.2018 09:35:05
UweD
Hallo
so?
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim RNG As Range
    Set RNG = Range("AB41:AB46")
    If Not Intersect(RNG, Target) Is Nothing Then
        With WorksheetFunction
            Nureinmal = .Max(100, .RoundUp(.Sum(RNG) / 100, 0) * 100)
        End With
    End If
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Summe As Integer
    With WorksheetFunction
        Summe = .Sum(Range("AB41:AB46"))
        If Summe > Nureinmal Then
            MsgBox ("Probe " & Summe)
            Nureinmal = .RoundUp(Summe / 100, 0) * 100
        ElseIf Summe = 0 Then
            Nureinmal = 100 'Bei Start oder nach Reset 
        End If
    End With
End Sub

LG UweD
Anzeige
AW: MsgBox nur einmal anzeigen
18.01.2018 10:33:18
Philip
Hallo
Ich nochmal.
Ich habe deinen Code angewendet, funktioniert soweit auch.
Aber jetz möchte ich den Code noch in anderen Zelle anwenden(AB16, AB29, AB32), aber mit einer anderen bedingung, die MsgBox sollte wenn die Werte 2500,5000,7500,10000,usw mit einem anderen Text geöffnet werden.
Gruss Philip
AW: MsgBox nur einmal anzeigen
18.01.2018 14:41:33
UweD
Hallo
so?
in ein Modul
Option Explicit
Public Nureinmal1 As Integer
Public Nureinmal2 As Integer
Public Nureinmal3 As Integer
Public Const RNG1 As String = "AB41:AB46"
Public Const RNG2 As String = "AB16:AB19"
Public Const RNG3 As String = "AB29:AB30"
Public Const Ru1 As Integer = 100
Public Const Ru2 As Integer = 1000
Public Const Ru3 As Integer = 2500
ins Blatt

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With WorksheetFunction
If Not Intersect(Range(RNG1), Target) Is Nothing Then
Nureinmal1 = .Max(Ru1, .RoundUp(.Sum(Range(RNG1)) / Ru1, 0) * Ru1)
End If
If Not Intersect(Range(RNG2), Target) Is Nothing Then
Nureinmal2 = .Max(Ru2, .RoundUp(.Sum(Range(RNG2)) / Ru2, 0) * Ru2)
End If
If Not Intersect(Range(RNG3), Target) Is Nothing Then
Nureinmal3 = .Max(Ru3, .RoundUp(.Sum(Range(RNG3)) / Ru3, 0) * Ru3)
End If
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Summe As Integer
With WorksheetFunction
If Not Intersect(Range(RNG1), Target) Is Nothing Then
Summe = .Sum(Range(RNG1))
If Summe > Nureinmal1 Then
MsgBox ("Probe für " & Ru1 & "er: " & Summe)
Nureinmal1 = .RoundUp(Summe / Ru1, 0) * Ru1
ElseIf Summe = 0 Then
Nureinmal1 = Ru1 'Bei Start oder nach Reset
End If
End If
If Not Intersect(Range(RNG2), Target) Is Nothing Then
Summe = .Sum(Range(RNG2))
If Summe > Nureinmal2 Then
MsgBox ("Probe für " & Ru2 & "er: " & Summe)
Nureinmal2 = .RoundUp(Summe / Ru2, 0) * Ru2
ElseIf Summe = 0 Then
Nureinmal2 = Ru2 'Bei Start oder nach Reset
End If
End If
If Not Intersect(Range(RNG3), Target) Is Nothing Then
Summe = .Sum(Range(RNG3))
If Summe > Nureinmal3 Then
MsgBox ("Probe für " & Ru3 & "er: " & Summe)
Nureinmal3 = .RoundUp(Summe / Ru3, 0) * Ru3
ElseIf Summe = 0 Then
Nureinmal3 = Ru3 'Bei Start oder nach Reset
End If
End If
End With
End Sub

Anzeige
AW: MsgBox nur einmal anzeigen
18.01.2018 15:07:51
Philip
Hallo Uwe
Danke für deine Bemühungen es funktioniert soweit auch nur ist in diesen Felder eine Formel und wenn ich diese berechne wird dein Code nicht ausgeführt.
Gruss Philip
AW: MsgBox nur einmal anzeigen
18.01.2018 16:21:31
UweD
Hallo nochmal
dann müssen die events beim calkulieren ausgeführt werden
in das Blatt noch ergänzen

Private Sub Worksheet_Calculate()
Worksheet_Change Range(RNG1)
Worksheet_Change Range(RNG2)
Worksheet_Change Range(RNG3)
End Sub
LG UweD

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige